
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

Packet * ssh2_rdpkt(Ssh_conflict ssh,uchar **data,int *datalen)

{
  int iVar1;
  byte bVar2;
  uchar auVar3 [4];
  ulong uVar4;
  void *pvVar5;
  ssh2_cipher *psVar6;
  uint uVar7;
  int iVar8;
  char *pcVar9;
  Packet *pPVar10;
  uchar *puVar11;
  int iVar12;
  size_t sVar13;
  uint *puVar14;
  long lVar15;
  int in_GS_OFFSET;
  int local_34;
  uchar *newpayload;
  int newlen;
  uchar seq [4];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  iVar8 = ssh->ssh2_rdpkt_crstate;
  if (iVar8 == 0x6b2) {
LAB_0004a267:
    do {
      if (*datalen == 0) {
        ssh->ssh2_rdpkt_crstate = 0x6b2;
        pPVar10 = (Packet *)0x0;
        goto LAB_0004a01e;
      }
      puVar11 = *data;
      *data = puVar11 + 1;
      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;
      *datalen = *datalen + -1;
      iVar8 = (ssh->rdpkt2_state).i + 1;
      (ssh->rdpkt2_state).i = iVar8;
    } while (iVar8 < 4);
    psVar6 = ssh->sccipher;
    auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data;
    if ((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)) {
      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |
                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);
      (ssh->rdpkt2_state).len = uVar7;
    }
    else {
      seq = auVar3;
      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);
      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |
                    (int)seq << 0x18);
      (ssh->rdpkt2_state).len = uVar7;
    }
    if ((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)) {
      pPVar10 = (ssh->rdpkt2_state).pktin;
      (ssh->rdpkt2_state).packetlen = uVar7 + 4;
      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;
      pPVar10->maxlen = sVar13;
      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);
      pPVar10->data = puVar11;
      iVar8 = 4;
      (ssh->rdpkt2_state).i = 4;
      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {
LAB_0004a060:
        if (*datalen == 0) {
          ssh->ssh2_rdpkt_crstate = 0x6de;
          pPVar10 = (Packet *)0x0;
          goto LAB_0004a01e;
        }
        puVar11 = *data;
        *data = puVar11 + 1;
        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;
        *datalen = *datalen + -1;
        iVar8 = (ssh->rdpkt2_state).i + 1;
        (ssh->rdpkt2_state).i = iVar8;
      }
      pPVar10 = (ssh->rdpkt2_state).pktin;
      puVar11 = pPVar10->data;
      if (ssh->scmac != (ssh_mac *)0x0) {
        iVar8 = (*ssh->scmac->verify)
                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,
                           (ssh->rdpkt2_state).incoming_sequence);
        if (iVar8 == 0) {
LAB_0004a92e:
          pcVar9 = "Incorrect MAC received on packet";
          goto LAB_0004a660;
        }
        pPVar10 = (ssh->rdpkt2_state).pktin;
        puVar11 = pPVar10->data;
      }
      if (ssh->sccipher != (ssh2_cipher *)0x0) {
        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)
        ;
        pPVar10 = (ssh->rdpkt2_state).pktin;
        puVar11 = pPVar10->data;
      }
LAB_0004a412:
      uVar7 = (uint)puVar11[4];
      (ssh->rdpkt2_state).pad = uVar7;
      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {
        uVar4 = (ssh->rdpkt2_state).incoming_sequence;
        (ssh->rdpkt2_state).payload = iVar8 + -1;
        iVar8 = (ssh->rdpkt2_state).packetlen;
        pPVar10->encrypted_len = iVar8;
        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;
        pPVar10->sequence = uVar4;
        lVar15 = iVar8 - uVar7;
        pPVar10->length = lVar15;
        if (lVar15 < 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");
        }
        if (ssh->sccomp != (ssh_compress *)0x0) {
          iVar8 = (*ssh->sccomp->decompress)
                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);
          if (iVar8 == 0) {
            pPVar10 = (ssh->rdpkt2_state).pktin;
            lVar15 = pPVar10->length;
          }
          else {
            pPVar10 = (ssh->rdpkt2_state).pktin;
            sVar13 = newlen + 5;
            puVar11 = pPVar10->data;
            if (pPVar10->maxlen <= newlen + 4) {
              pPVar10->maxlen = sVar13;
              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);
              pPVar10->data = puVar11;
              pPVar10 = (ssh->rdpkt2_state).pktin;
              sVar13 = newlen + 5;
              puVar11 = pPVar10->data;
            }
            pPVar10->length = sVar13;
            memcpy(puVar11 + 5,newpayload,newlen);
            safefree(newpayload);
            pPVar10 = (ssh->rdpkt2_state).pktin;
            lVar15 = pPVar10->length;
          }
        }
        if (lVar15 < 6) {
          ssh2_msg_something_unimplemented(ssh,pPVar10);
          pPVar10 = (Packet *)0x0;
          ssh->ssh2_rdpkt_crstate = 0;
          goto LAB_0004a01e;
        }
        bVar2 = pPVar10->data[5];
        pPVar10->length = lVar15 + -6;
        pvVar5 = ssh->logctx;
        pPVar10->body = pPVar10->data + 6;
        pPVar10->type = (uint)bVar2;
        if (pvVar5 != (void *)0x0) {
          ssh2_log_incoming_packet(ssh,pPVar10);
          pPVar10 = (ssh->rdpkt2_state).pktin;
        }
        pPVar10->savedpos = 0;
        goto LAB_0004a014;
      }
      pcVar9 = "Invalid padding length on received packet";
    }
    else {
      pcVar9 = "Incoming packet length field was garbled";
    }
LAB_0004a660:
    pcVar9 = dupprintf(pcVar9);
    bomb_out(ssh,pcVar9);
    pPVar10 = (ssh->rdpkt2_state).pktin;
    safefree(pPVar10->data);
    safefree(pPVar10);
    pPVar10 = (Packet *)0x0;
    ssh->ssh2_rdpkt_crstate = 0;
  }
  else {
    if (iVar8 < 0x6b3) {
      if (iVar8 == 0x67c) goto LAB_0004a4f0;
      if (iVar8 == 0x68d) goto LAB_0004a580;
      if (iVar8 == 0) {
        pPVar10 = (Packet *)safemalloc(1,0x2c);
        pPVar10->data = (uchar *)0x0;
        pPVar10->body = (uchar *)0x0;
        pPVar10->maxlen = 0;
        (ssh->rdpkt2_state).pktin = pPVar10;
        pPVar10->type = 0;
        pPVar10->length = 0;
        psVar6 = ssh->sccipher;
        if ((psVar6 == (ssh2_cipher *)0x0) ||
           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {
          (ssh->rdpkt2_state).cipherblk = 8;
          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;
          local_34 = ssh->scmac->len;
          (ssh->rdpkt2_state).maclen = local_34;
          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;
LAB_0004a72c:
          if (ssh->scmac_etm != 0) {
LAB_0004a239:
            puVar11 = (uchar *)safemalloc(4,1);
            pPVar10->data = puVar11;
            (ssh->rdpkt2_state).len = 0;
            (ssh->rdpkt2_state).i = 0;
            goto LAB_0004a267;
          }
        }
        else {
          if (ssh->scmac != (ssh_mac *)0x0) {
            local_34 = ssh->scmac->len;
            (ssh->rdpkt2_state).maclen = local_34;
LAB_0004a220:
            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;
            if (ssh->scmac_etm != 0) goto LAB_0004a239;
            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);
            pPVar10->data = puVar11;
            (ssh->rdpkt2_state).i = 0;
            iVar8 = 0;
            while (iVar8 < (ssh->rdpkt2_state).maclen) {
LAB_0004a4f0:
              if (*datalen == 0) {
                ssh->ssh2_rdpkt_crstate = 0x67c;
                pPVar10 = (Packet *)0x0;
                goto LAB_0004a01e;
              }
              puVar11 = *data;
              *data = puVar11 + 1;
              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;
              *datalen = *datalen + -1;
              iVar8 = (ssh->rdpkt2_state).i + 1;
              (ssh->rdpkt2_state).i = iVar8;
            }
            (ssh->rdpkt2_state).packetlen = 0;
            (*ssh->scmac->start)(ssh->sc_mac_ctx);
            uVar7 = (ssh->rdpkt2_state).incoming_sequence;
            seq = (uchar  [4])
                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);
            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);
            do {
              (ssh->rdpkt2_state).i = 0;
              iVar8 = 0;
              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {
LAB_0004a580:
                if (*datalen == 0) {
                  ssh->ssh2_rdpkt_crstate = 0x68d;
                  pPVar10 = (Packet *)0x0;
                  goto LAB_0004a01e;
                }
                puVar11 = *data;
                pPVar10 = (ssh->rdpkt2_state).pktin;
                *data = puVar11 + 1;
                pPVar10->data
                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]
                     = *puVar11;
                *datalen = *datalen + -1;
                iVar8 = (ssh->rdpkt2_state).i + 1;
                (ssh->rdpkt2_state).i = iVar8;
              }
              (*ssh->sccipher->decrypt)
                        (ssh->sc_cipher_ctx,
                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);
              (*ssh->scmac->bytes)
                        (ssh->sc_mac_ctx,
                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,
                         (ssh->rdpkt2_state).cipherblk);
              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;
              (ssh->rdpkt2_state).packetlen = iVar8;
              iVar8 = (*ssh->scmac->verresult)
                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);
              if (iVar8 != 0) {
                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;
                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |
                               uVar7 << 0x18);
                iVar8 = (ssh->rdpkt2_state).packetlen;
                (ssh->rdpkt2_state).len = iVar12;
                if (iVar12 == iVar8 + -4) {
                  pPVar10 = (ssh->rdpkt2_state).pktin;
                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;
                  pPVar10->maxlen = sVar13;
                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);
                  pPVar10->data = puVar11;
                  pPVar10 = (ssh->rdpkt2_state).pktin;
                  puVar11 = pPVar10->data;
                  goto LAB_0004a412;
                }
              }
            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);
            pcVar9 = "No valid incoming packet found";
            goto LAB_0004a660;
          }
LAB_0004a798:
          (ssh->rdpkt2_state).maclen = 0;
        }
        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);
        pPVar10->data = puVar11;
        (ssh->rdpkt2_state).len = 0;
        (ssh->rdpkt2_state).i = 0;
        iVar8 = 0;
        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {
LAB_0004a120:
          if (*datalen == 0) {
            ssh->ssh2_rdpkt_crstate = 0x6fc;
            pPVar10 = (Packet *)0x0;
            goto LAB_0004a01e;
          }
          puVar11 = *data;
          *data = puVar11 + 1;
          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;
          *datalen = *datalen + -1;
          iVar8 = (ssh->rdpkt2_state).i + 1;
          (ssh->rdpkt2_state).i = iVar8;
        }
        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;
        if (ssh->sccipher != (ssh2_cipher *)0x0) {
          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);
          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;
        }
        uVar7 = *puVar14;
        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |
                      uVar7 << 0x18);
        (ssh->rdpkt2_state).len = uVar7;
        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {
          pcVar9 = "Incoming packet was garbled on decryption";
          goto LAB_0004a660;
        }
        pPVar10 = (ssh->rdpkt2_state).pktin;
        (ssh->rdpkt2_state).packetlen = iVar8;
        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;
        pPVar10->maxlen = sVar13;
        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);
        pPVar10->data = puVar11;
        iVar8 = (ssh->rdpkt2_state).cipherblk;
        (ssh->rdpkt2_state).i = iVar8;
        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)
        {
LAB_0004a360:
          if (*datalen == 0) {
            ssh->ssh2_rdpkt_crstate = 0x728;
            pPVar10 = (Packet *)0x0;
            goto LAB_0004a01e;
          }
          puVar11 = *data;
          *data = puVar11 + 1;
          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;
          *datalen = *datalen + -1;
          iVar8 = (ssh->rdpkt2_state).i + 1;
          (ssh->rdpkt2_state).i = iVar8;
        }
        pPVar10 = (ssh->rdpkt2_state).pktin;
        puVar11 = pPVar10->data;
        if (ssh->sccipher != (ssh2_cipher *)0x0) {
          iVar8 = (ssh->rdpkt2_state).cipherblk;
          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);
          pPVar10 = (ssh->rdpkt2_state).pktin;
          puVar11 = pPVar10->data;
        }
        if (ssh->scmac != (ssh_mac *)0x0) {
          iVar8 = (*ssh->scmac->verify)
                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,
                             (ssh->rdpkt2_state).incoming_sequence);
          if (iVar8 == 0) goto LAB_0004a92e;
          pPVar10 = (ssh->rdpkt2_state).pktin;
          puVar11 = pPVar10->data;
        }
        goto LAB_0004a412;
      }
    }
    else {
      if (iVar8 == 0x6fc) goto LAB_0004a120;
      if (iVar8 == 0x728) goto LAB_0004a360;
      if (iVar8 == 0x6de) goto LAB_0004a060;
    }
    pPVar10 = (ssh->rdpkt2_state).pktin;
LAB_0004a014:
    ssh->ssh2_rdpkt_crstate = 0;
  }
LAB_0004a01e:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return pPVar10;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * FUN_00049fb0(int param_1,int *param_2,int *param_3)

{
  byte bVar1;
  undefined1 *puVar2;
  uint uVar3;
  char *pcVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int *piVar7;
  int iVar8;
  uint *puVar9;
  int iVar10;
  int iVar11;
  int in_GS_OFFSET;
  int local_34;
  void *local_2c;
  size_t local_28;
  uint local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x49fb9;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar8 = *(int *)(param_1 + 0x1b4);
  if (iVar8 == 0x6b2) {
LAB_0004a267:
    do {
      if (*param_3 == 0) {
        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;
        piVar7 = (int *)0x0;
        goto LAB_0004a01e;
      }
      puVar2 = (undefined1 *)*param_2;
      *param_2 = (int)(puVar2 + 1);
      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
           *puVar2;
      *param_3 = *param_3 + -1;
      iVar8 = *(int *)(param_1 + 0x214) + 1;
      *(int *)(param_1 + 0x214) = iVar8;
    } while (iVar8 < 4);
    iVar8 = *(int *)(param_1 + 100);
    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);
    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {
      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                           uVar3 << 0x18);
      *(uint *)(param_1 + 0x200) = uVar3;
    }
    else {
      local_24 = uVar3;
      (**(code **)(iVar8 + 0x1c))
                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));
      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8
                           | local_24 << 0x18);
      *(uint *)(param_1 + 0x200) = uVar3;
    }
    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {
      iVar8 = *(int *)(param_1 + 0x220);
      *(uint *)(param_1 + 0x20c) = uVar3 + 4;
      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);
      *(int *)(iVar8 + 0x1c) = iVar10;
      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);
      *(undefined4 *)(iVar8 + 0x10) = uVar6;
      iVar8 = 4;
      *(undefined4 *)(param_1 + 0x214) = 4;
      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {
LAB_0004a060:
        if (*param_3 == 0) {
          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;
          piVar7 = (int *)0x0;
          goto LAB_0004a01e;
        }
        puVar2 = (undefined1 *)*param_2;
        *param_2 = (int)(puVar2 + 1);
        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
             *puVar2;
        *param_3 = *param_3 + -1;
        iVar8 = *(int *)(param_1 + 0x214) + 1;
        *(int *)(param_1 + 0x214) = iVar8;
      }
      piVar7 = *(int **)(param_1 + 0x220);
      iVar8 = piVar7[4];
      if (*(int *)(param_1 + 0x74) != 0) {
        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))
                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,
                           *(undefined4 *)(param_1 + 0x21c));
        if (iVar8 == 0) {
LAB_0004a92e:
          pcVar4 = "Incorrect MAC received on packet";
          goto LAB_0004a660;
        }
        piVar7 = *(int **)(param_1 + 0x220);
        iVar8 = piVar7[4];
      }
      if (*(int *)(param_1 + 100) != 0) {
        (**(code **)(*(int *)(param_1 + 100) + 0x14))
                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);
        piVar7 = *(int **)(param_1 + 0x220);
        iVar8 = piVar7[4];
      }
LAB_0004a412:
      uVar3 = (uint)*(byte *)(iVar8 + 4);
      *(uint *)(param_1 + 0x204) = uVar3;
      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {
        iVar11 = *(int *)(param_1 + 0x21c);
        *(int *)(param_1 + 0x208) = iVar10 + -1;
        iVar10 = *(int *)(param_1 + 0x20c);
        piVar7[8] = iVar10;
        *(int *)(param_1 + 0x21c) = iVar11 + 1;
        piVar7[3] = iVar11;
        iVar10 = iVar10 - uVar3;
        *piVar7 = iVar10;
        if (iVar10 < 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");
        }
        if (*(int *)(param_1 + 0x8c) != 0) {
          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))
                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,
                             &local_28);
          if (iVar8 == 0) {
            piVar7 = *(int **)(param_1 + 0x220);
            iVar10 = *piVar7;
          }
          else {
            piVar7 = *(int **)(param_1 + 0x220);
            iVar8 = local_28 + 5;
            iVar10 = piVar7[4];
            if (piVar7[7] <= (int)(local_28 + 4)) {
              piVar7[7] = iVar8;
              iVar8 = FUN_0002eb80(iVar10,iVar8,1);
              piVar7[4] = iVar8;
              piVar7 = *(int **)(param_1 + 0x220);
              iVar8 = local_28 + 5;
              iVar10 = piVar7[4];
            }
            *piVar7 = iVar8;
            memcpy((void *)(iVar10 + 5),local_2c,local_28);
            FUN_0002f010(local_2c);
            piVar7 = *(int **)(param_1 + 0x220);
            iVar10 = *piVar7;
          }
        }
        if (iVar10 < 6) {
          FUN_00049f80(param_1,piVar7);
          piVar7 = (int *)0x0;
          *(undefined4 *)(param_1 + 0x1b4) = 0;
          goto LAB_0004a01e;
        }
        bVar1 = *(byte *)(piVar7[4] + 5);
        *piVar7 = iVar10 + -6;
        iVar8 = *(int *)(param_1 + 0x18);
        piVar7[5] = piVar7[4] + 6;
        piVar7[2] = (uint)bVar1;
        if (iVar8 != 0) {
          FUN_000399f0();
          piVar7 = *(int **)(param_1 + 0x220);
        }
        piVar7[6] = 0;
        goto LAB_0004a014;
      }
      pcVar4 = "Invalid padding length on received packet";
    }
    else {
      pcVar4 = "Incoming packet length field was garbled";
    }
LAB_0004a660:
    FUN_0002edf0(pcVar4);
    FUN_0003a2d0();
    iVar8 = *(int *)(param_1 + 0x220);
    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));
    FUN_0002f010(iVar8);
    piVar7 = (int *)0x0;
    *(undefined4 *)(param_1 + 0x1b4) = 0;
  }
  else {
    if (iVar8 < 0x6b3) {
      if (iVar8 == 0x67c) goto LAB_0004a4f0;
      if (iVar8 == 0x68d) goto LAB_0004a580;
      if (iVar8 == 0) {
        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);
        puVar5[4] = 0;
        puVar5[5] = 0;
        puVar5[7] = 0;
        *(undefined4 **)(param_1 + 0x220) = puVar5;
        puVar5[2] = 0;
        *puVar5 = 0;
        iVar8 = *(int *)(param_1 + 100);
        if ((iVar8 == 0) ||
           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {
          *(undefined4 *)(param_1 + 0x218) = 8;
          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;
          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);
          *(int *)(param_1 + 0x210) = local_34;
          if (iVar8 != 0) goto LAB_0004a220;
LAB_0004a72c:
          if (*(int *)(param_1 + 0x7c) != 0) {
LAB_0004a239:
            uVar6 = FUN_0002e780(4,1);
            puVar5[4] = uVar6;
            *(undefined4 *)(param_1 + 0x200) = 0;
            *(undefined4 *)(param_1 + 0x214) = 0;
            goto LAB_0004a267;
          }
        }
        else {
          if (*(int *)(param_1 + 0x74) != 0) {
            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);
            *(int *)(param_1 + 0x210) = local_34;
LAB_0004a220:
            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;
            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;
            uVar6 = FUN_0002e780(local_34 + 0x9000,1);
            puVar5[4] = uVar6;
            *(undefined4 *)(param_1 + 0x214) = 0;
            iVar8 = 0;
            while (iVar8 < *(int *)(param_1 + 0x210)) {
LAB_0004a4f0:
              if (*param_3 == 0) {
                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;
                piVar7 = (int *)0x0;
                goto LAB_0004a01e;
              }
              puVar2 = (undefined1 *)*param_2;
              *param_2 = (int)(puVar2 + 1);
              *(undefined1 *)
               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;
              *param_3 = *param_3 + -1;
              iVar8 = *(int *)(param_1 + 0x214) + 1;
              *(int *)(param_1 + 0x214) = iVar8;
            }
            *(undefined4 *)(param_1 + 0x20c) = 0;
            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));
            uVar3 = *(uint *)(param_1 + 0x21c);
            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                       uVar3 << 0x18;
            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))
                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);
            do {
              *(undefined4 *)(param_1 + 0x214) = 0;
              iVar8 = 0;
              while (iVar8 < *(int *)(param_1 + 0x218)) {
LAB_0004a580:
                if (*param_3 == 0) {
                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;
                  piVar7 = (int *)0x0;
                  goto LAB_0004a01e;
                }
                puVar2 = (undefined1 *)*param_2;
                iVar8 = *(int *)(param_1 + 0x220);
                *param_2 = (int)(puVar2 + 1);
                *(undefined1 *)
                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +
                 *(int *)(param_1 + 0x214)) = *puVar2;
                *param_3 = *param_3 + -1;
                iVar8 = *(int *)(param_1 + 0x214) + 1;
                *(int *)(param_1 + 0x214) = iVar8;
              }
              (**(code **)(*(int *)(param_1 + 100) + 0x14))
                        (*(undefined4 *)(param_1 + 0x6c),
                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),
                         *(int *)(param_1 + 0x218));
              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))
                        (*(undefined4 *)(param_1 + 0x84),
                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),
                         *(undefined4 *)(param_1 + 0x218));
              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);
              *(int *)(param_1 + 0x20c) = iVar8;
              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))
                                (*(undefined4 *)(param_1 + 0x84),
                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));
              if (iVar8 != 0) {
                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);
                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8
                                     | uVar3 << 0x18);
                *(int *)(param_1 + 0x200) = iVar8;
                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {
                  iVar10 = *(int *)(param_1 + 0x220);
                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);
                  *(int *)(iVar10 + 0x1c) = iVar11;
                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);
                  *(undefined4 *)(iVar10 + 0x10) = uVar6;
                  piVar7 = *(int **)(param_1 + 0x220);
                  iVar8 = piVar7[4];
                  goto LAB_0004a412;
                }
              }
            } while (*(uint *)(param_1 + 0x20c) < 0x9000);
            pcVar4 = "No valid incoming packet found";
            goto LAB_0004a660;
          }
LAB_0004a798:
          *(undefined4 *)(param_1 + 0x210) = 0;
        }
        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);
        puVar5[4] = uVar6;
        *(undefined4 *)(param_1 + 0x200) = 0;
        *(undefined4 *)(param_1 + 0x214) = 0;
        iVar8 = 0;
        while (iVar8 < *(int *)(param_1 + 0x218)) {
LAB_0004a120:
          if (*param_3 == 0) {
            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;
            piVar7 = (int *)0x0;
            goto LAB_0004a01e;
          }
          puVar2 = (undefined1 *)*param_2;
          *param_2 = (int)(puVar2 + 1);
          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
               *puVar2;
          *param_3 = *param_3 + -1;
          iVar8 = *(int *)(param_1 + 0x214) + 1;
          *(int *)(param_1 + 0x214) = iVar8;
        }
        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);
        if (*(int *)(param_1 + 100) != 0) {
          (**(code **)(*(int *)(param_1 + 100) + 0x14))
                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));
          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);
        }
        uVar3 = *puVar9;
        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                             uVar3 << 0x18);
        *(uint *)(param_1 + 0x200) = uVar3;
        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {
          pcVar4 = "Incoming packet was garbled on decryption";
          goto LAB_0004a660;
        }
        iVar10 = *(int *)(param_1 + 0x220);
        *(int *)(param_1 + 0x20c) = iVar8;
        iVar8 = iVar8 + *(int *)(param_1 + 0x210);
        *(int *)(iVar10 + 0x1c) = iVar8;
        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);
        *(undefined4 *)(iVar10 + 0x10) = uVar6;
        iVar8 = *(int *)(param_1 + 0x218);
        *(int *)(param_1 + 0x214) = iVar8;
        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {
LAB_0004a360:
          if (*param_3 == 0) {
            *(undefined4 *)(param_1 + 0x1b4) = 0x728;
            piVar7 = (int *)0x0;
            goto LAB_0004a01e;
          }
          puVar2 = (undefined1 *)*param_2;
          *param_2 = (int)(puVar2 + 1);
          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
               *puVar2;
          *param_3 = *param_3 + -1;
          iVar8 = *(int *)(param_1 + 0x214) + 1;
          *(int *)(param_1 + 0x214) = iVar8;
        }
        piVar7 = *(int **)(param_1 + 0x220);
        iVar8 = piVar7[4];
        if (*(int *)(param_1 + 100) != 0) {
          (**(code **)(*(int *)(param_1 + 100) + 0x14))
                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,
                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));
          piVar7 = *(int **)(param_1 + 0x220);
          iVar8 = piVar7[4];
        }
        if (*(int *)(param_1 + 0x74) != 0) {
          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))
                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,
                             *(undefined4 *)(param_1 + 0x21c));
          if (iVar8 == 0) goto LAB_0004a92e;
          piVar7 = *(int **)(param_1 + 0x220);
          iVar8 = piVar7[4];
        }
        goto LAB_0004a412;
      }
    }
    else {
      if (iVar8 == 0x6fc) goto LAB_0004a120;
      if (iVar8 == 0x728) goto LAB_0004a360;
      if (iVar8 == 0x6de) goto LAB_0004a060;
    }
    piVar7 = *(int **)(param_1 + 0x220);
LAB_0004a014:
    *(undefined4 *)(param_1 + 0x1b4) = 0;
  }
LAB_0004a01e:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return piVar7;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a39d0();
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001c4f0
ADD EBX,0xc6797
SUB ESP,0x2c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
MOV ESI,dword ptr [ESP + 0x40]
MOV EBP,dword ptr [ESP + 0x44]
MOV EDI,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESI + 0x1b4]
CMP EDX,0x6b2
JZ 0x0004a267
JG 0x0004a040
CMP EDX,0x67c
JZ 0x0004a4f0
CMP EDX,0x68d
JZ 0x0004a580
TEST EDX,EDX
JZ 0x0004a6a0
MOV EAX,dword ptr [ESI + 0x220]
MOV dword ptr [ESI + 0x1b4],0x0
MOV EBX,dword ptr [ESP + 0x1c]
XOR EBX,dword ptr GS:[0x14]
JNZ 0x0004a99b
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EDX,0x6fc
JZ 0x0004a120
CMP EDX,0x728
JZ 0x0004a360
CMP EDX,0x6de
JNZ 0x0004a00e
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x0004a808
MOV EAX,dword ptr [EBP]
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBP],EDX
MOVZX ECX,byte ptr [EAX]
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESI + 0x214]
MOV byte ptr [EDX + EAX*0x1],CL
SUB dword ptr [EDI],0x1
MOV EAX,dword ptr [ESI + 0x214]
ADD EAX,0x1
MOV dword ptr [ESI + 0x214],EAX
MOV EDX,dword ptr [ESI + 0x210]
ADD EDX,dword ptr [ESI + 0x20c]
CMP EDX,EAX
JG 0x0004a060
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [ESI + 0x74]
MOV ECX,dword ptr [EAX + 0x10]
TEST EDX,EDX
JZ 0x0004a0e8
PUSH dword ptr [ESI + 0x21c]
MOV EAX,dword ptr [ESI + 0x200]
ADD EAX,0x4
PUSH EAX
PUSH ECX
PUSH dword ptr [ESI + 0x84]
CALL dword ptr [EDX + 0x10]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004a92e
MOV EAX,dword ptr [ESI + 0x220]
MOV ECX,dword ptr [EAX + 0x10]
MOV EDX,dword ptr [ESI + 0x64]
TEST EDX,EDX
JZ 0x0004a412
MOV EAX,dword ptr [ESI + 0x20c]
SUB ESP,0x4
ADD ECX,0x4
SUB EAX,0x4
PUSH EAX
PUSH ECX
PUSH dword ptr [ESI + 0x6c]
CALL dword ptr [EDX + 0x14]
MOV EAX,dword ptr [ESI + 0x220]
ADD ESP,0x10
MOV ECX,dword ptr [EAX + 0x10]
JMP 0x0004a412
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x0004a7a8
MOV EAX,dword ptr [EBP]
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBP],EDX
MOVZX ECX,byte ptr [EAX]
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESI + 0x214]
MOV byte ptr [EDX + EAX*0x1],CL
SUB dword ptr [EDI],0x1
MOV EAX,dword ptr [ESI + 0x214]
LEA EDX,[EAX + 0x1]
MOV dword ptr [ESI + 0x214],EDX
MOV EAX,dword ptr [ESI + 0x218]
CMP EAX,EDX
JG 0x0004a120
MOV EDX,dword ptr [ESI + 0x220]
MOV ECX,dword ptr [ESI + 0x64]
MOV EDX,dword ptr [EDX + 0x10]
TEST ECX,ECX
JZ 0x0004a18b
SUB ESP,0x4
PUSH EAX
PUSH EDX
PUSH dword ptr [ESI + 0x6c]
CALL dword ptr [ECX + 0x14]
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [EAX + 0x10]
ADD ESP,0x10
MOV EAX,dword ptr [EDX]
SUB ESP,0xc
BSWAP EAX
PUSH EAX
CALL 0x0002e1f0
ADD ESP,0x10
MOV dword ptr [ESI + 0x200],EAX
CMP EAX,0x9000
JA 0x0004a838
LEA ECX,[EAX + 0x4]
MOV EAX,ECX
CDQ
IDIV dword ptr [ESI + 0x218]
TEST EDX,EDX
JNZ 0x0004a838
MOV EDX,dword ptr [ESI + 0x220]
SUB ESP,0x4
MOV dword ptr [ESI + 0x20c],ECX
ADD ECX,dword ptr [ESI + 0x210]
MOV dword ptr [EDX + 0x1c],ECX
PUSH 0x1
PUSH ECX
PUSH dword ptr [EDX + 0x10]
MOV dword ptr [ESP + 0x14],EDX
CALL 0x0002eb80
MOV EDX,dword ptr [ESP + 0x14]
ADD ESP,0x10
MOV dword ptr [EDX + 0x10],EAX
MOV EAX,dword ptr [ESI + 0x218]
MOV dword ptr [ESI + 0x214],EAX
JMP 0x0004a39a
MOV EAX,dword ptr [ESI + 0x74]
TEST EAX,EAX
JZ 0x0004a798
MOV EAX,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESI + 0x210],EAX
MOV EAX,dword ptr [ESP + 0x4]
TEST byte ptr [EAX + 0x30],0x1
JZ 0x0004a72c
MOV EDX,dword ptr [ESI + 0x7c]
TEST EDX,EDX
JZ 0x0004a850
MOV dword ptr [ESP + 0x4],ECX
SUB ESP,0x8
PUSH 0x1
PUSH 0x4
CALL 0x0002e780
MOV ECX,dword ptr [ESP + 0x14]
ADD ESP,0x10
MOV dword ptr [ECX + 0x10],EAX
MOV dword ptr [ESI + 0x200],0x0
MOV dword ptr [ESI + 0x214],0x0
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x0004a7c0
MOV EAX,dword ptr [EBP]
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBP],EDX
MOVZX ECX,byte ptr [EAX]
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESI + 0x214]
MOV byte ptr [EDX + EAX*0x1],CL
SUB dword ptr [EDI],0x1
MOV EAX,dword ptr [ESI + 0x214]
ADD EAX,0x1
MOV dword ptr [ESI + 0x214],EAX
CMP EAX,0x3
JLE 0x0004a267
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [ESI + 0x64]
MOV EAX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX]
TEST EDX,EDX
JZ 0x0004a776
TEST byte ptr [EDX + 0x30],0x2
JZ 0x0004a776
MOV dword ptr [ESP + 0x18],EAX
PUSH dword ptr [ESI + 0x21c]
PUSH 0x4
LEA EAX,[ESP + 0x20]
PUSH EAX
PUSH dword ptr [ESI + 0x6c]
CALL dword ptr [EDX + 0x1c]
MOV EAX,dword ptr [ESP + 0x28]
BSWAP EAX
MOV dword ptr [ESP],EAX
CALL 0x0002e1f0
ADD ESP,0x10
MOV dword ptr [ESI + 0x200],EAX
MOV ECX,EAX
CMP ECX,0x9000
JA 0x0004a889
MOV EAX,ECX
CDQ
IDIV dword ptr [ESI + 0x218]
TEST EDX,EDX
JNZ 0x0004a889
MOV EDX,dword ptr [ESI + 0x220]
LEA EAX,[ECX + 0x4]
SUB ESP,0x4
MOV dword ptr [ESI + 0x20c],EAX
ADD EAX,dword ptr [ESI + 0x210]
MOV dword ptr [EDX + 0x1c],EAX
PUSH 0x1
PUSH EAX
PUSH dword ptr [EDX + 0x10]
MOV dword ptr [ESP + 0x14],EDX
CALL 0x0002eb80
MOV EDX,dword ptr [ESP + 0x14]
ADD ESP,0x10
MOV dword ptr [EDX + 0x10],EAX
MOV EAX,0x4
MOV dword ptr [ESI + 0x214],0x4
JMP 0x0004a09a
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x0004a7d8
MOV EAX,dword ptr [EBP]
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBP],EDX
MOVZX ECX,byte ptr [EAX]
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESI + 0x214]
MOV byte ptr [EDX + EAX*0x1],CL
SUB dword ptr [EDI],0x1
MOV EAX,dword ptr [ESI + 0x214]
ADD EAX,0x1
MOV dword ptr [ESI + 0x214],EAX
MOV EDX,dword ptr [ESI + 0x20c]
MOV ECX,dword ptr [ESI + 0x210]
ADD ECX,EDX
CMP ECX,EAX
JG 0x0004a360
MOV EAX,dword ptr [ESI + 0x220]
MOV EDI,dword ptr [ESI + 0x64]
MOV ECX,dword ptr [EAX + 0x10]
TEST EDI,EDI
JZ 0x0004a3dd
MOV EAX,dword ptr [ESI + 0x218]
SUB ESP,0x4
SUB EDX,EAX
ADD EAX,ECX
PUSH EDX
PUSH EAX
PUSH dword ptr [ESI + 0x6c]
CALL dword ptr [EDI + 0x14]
MOV EAX,dword ptr [ESI + 0x220]
MOV ECX,dword ptr [EAX + 0x10]
ADD ESP,0x10
MOV EDX,dword ptr [ESI + 0x74]
TEST EDX,EDX
JZ 0x0004a412
PUSH dword ptr [ESI + 0x21c]
MOV EAX,dword ptr [ESI + 0x200]
ADD EAX,0x4
PUSH EAX
PUSH ECX
PUSH dword ptr [ESI + 0x84]
CALL dword ptr [EDX + 0x10]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004a92e
MOV EAX,dword ptr [ESI + 0x220]
MOV ECX,dword ptr [EAX + 0x10]
MOVZX EDI,byte ptr [ECX + 0x4]
MOV dword ptr [ESI + 0x204],EDI
CMP EDI,0x3
JLE 0x0004a8db
MOV EDX,dword ptr [ESI + 0x200]
SUB EDX,EDI
TEST EDX,EDX
JLE 0x0004a8db
SUB EDX,0x1
MOV EBP,dword ptr [ESI + 0x21c]
MOV dword ptr [ESI + 0x208],EDX
MOV EDX,dword ptr [ESI + 0x20c]
MOV dword ptr [ESP + 0x4],EDX
MOV dword ptr [EAX + 0x20],EDX
LEA EDX,[EBP + 0x1]
MOV dword ptr [ESI + 0x21c],EDX
MOV EDX,dword ptr [ESP + 0x4]
MOV dword ptr [EAX + 0xc],EBP
SUB EDX,EDI
MOV dword ptr [EAX],EDX
JS 0x0004a9a0
MOV EDI,dword ptr [ESI + 0x8c]
TEST EDI,EDI
JZ 0x0004a4a6
SUB ESP,0xc
SUB EDX,0x5
ADD ECX,0x5
LEA EAX,[ESP + 0x20]
PUSH EAX
LEA EAX,[ESP + 0x20]
PUSH EAX
PUSH EDX
PUSH ECX
PUSH dword ptr [ESI + 0x94]
CALL dword ptr [EDI + 0x1c]
ADD ESP,0x20
TEST EAX,EAX
JNZ 0x0004a897
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [EAX]
CMP EDX,0x5
JLE 0x0004a910
MOV ECX,dword ptr [EAX + 0x10]
SUB EDX,0x6
MOVZX EBX,byte ptr [ECX + 0x5]
MOV dword ptr [EAX],EDX
ADD ECX,0x6
MOV EDX,dword ptr [ESI + 0x18]
MOV dword ptr [EAX + 0x14],ECX
MOV dword ptr [EAX + 0x8],EBX
TEST EDX,EDX
JZ 0x0004a4da
MOV EDX,EAX
MOV EAX,ESI
CALL 0x000399f0
MOV EAX,dword ptr [ESI + 0x220]
MOV dword ptr [EAX + 0x18],0x0
JMP 0x0004a014
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x0004a7f0
MOV EAX,dword ptr [EBP]
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBP],EDX
MOVZX ECX,byte ptr [EAX]
MOV EAX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESI + 0x214]
MOV byte ptr [EDX + EAX*0x1],CL
SUB dword ptr [EDI],0x1
MOV EAX,dword ptr [ESI + 0x214]
LEA EDX,[EAX + 0x1]
MOV dword ptr [ESI + 0x214],EDX
CMP dword ptr [ESI + 0x210],EDX
JG 0x0004a4f0
MOV dword ptr [ESI + 0x20c],0x0
MOV EAX,dword ptr [ESI + 0x74]
SUB ESP,0xc
PUSH dword ptr [ESI + 0x84]
CALL dword ptr [EAX + 0x14]
MOV EAX,dword ptr [ESI + 0x21c]
BSWAP EAX
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0xc
MOV EAX,dword ptr [ESI + 0x74]
PUSH 0x4
LEA EDX,[ESP + 0x20]
PUSH EDX
PUSH dword ptr [ESI + 0x84]
CALL dword ptr [EAX + 0x18]
ADD ESP,0x10
MOV dword ptr [ESI + 0x214],0x0
XOR EAX,EAX
JMP 0x0004a5c5
MOV EAX,dword ptr [EDI]
TEST EAX,EAX
JZ 0x0004a820
MOV EAX,dword ptr [EBP]
MOV ECX,dword ptr [ESI + 0x220]
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBP],EDX
MOVZX EDX,byte ptr [EAX]
MOV EAX,dword ptr [ESI + 0x20c]
ADD EAX,dword ptr [ECX + 0x10]
ADD EAX,dword ptr [ESI + 0x210]
ADD EAX,dword ptr [ESI + 0x214]
MOV byte ptr [EAX],DL
SUB dword ptr [EDI],0x1
MOV EAX,dword ptr [ESI + 0x214]
ADD EAX,0x1
MOV dword ptr [ESI + 0x214],EAX
MOV EDX,dword ptr [ESI + 0x218]
CMP EDX,EAX
JG 0x0004a580
SUB ESP,0x4
MOV ECX,dword ptr [ESI + 0x64]
MOV EAX,dword ptr [ESI + 0x20c]
PUSH EDX
MOV EDX,dword ptr [ESI + 0x220]
ADD EAX,dword ptr [EDX + 0x10]
PUSH EAX
PUSH dword ptr [ESI + 0x6c]
CALL dword ptr [ECX + 0x14]
MOV ECX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [ESI + 0x74]
MOV EAX,dword ptr [ESI + 0x20c]
ADD ESP,0xc
ADD EAX,dword ptr [ECX + 0x10]
PUSH dword ptr [ESI + 0x218]
PUSH EAX
PUSH dword ptr [ESI + 0x84]
CALL dword ptr [EDX + 0x18]
MOV EAX,dword ptr [ESI + 0x218]
ADD EAX,dword ptr [ESI + 0x20c]
MOV dword ptr [ESI + 0x20c],EAX
POP EDX
POP ECX
MOV ECX,dword ptr [ESI + 0x220]
MOV EDX,dword ptr [ESI + 0x74]
ADD EAX,dword ptr [ECX + 0x10]
PUSH EAX
PUSH dword ptr [ESI + 0x84]
CALL dword ptr [EDX + 0x20]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0004a93c
CMP dword ptr [ESI + 0x20c],0x8fff
JBE 0x0004a570
SUB ESP,0xc
LEA EAX,[EBX + 0xfffb1288]
NOP
PUSH EAX
CALL 0x0002edf0
MOV EDX,EAX
MOV EAX,ESI
CALL 0x0003a2d0
MOV EDI,dword ptr [ESI + 0x220]
POP ECX
PUSH dword ptr [EDI + 0x10]
CALL 0x0002f010
MOV dword ptr [ESP],EDI
CALL 0x0002f010
ADD ESP,0x10
XOR EAX,EAX
MOV dword ptr [ESI + 0x1b4],0x0
JMP 0x0004a01e
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0x8
PUSH 0x2c
PUSH 0x1
CALL 0x0002e780
MOV dword ptr [EAX + 0x10],0x0
MOV ECX,EAX
MOV dword ptr [EAX + 0x14],0x0
MOV dword ptr [EAX + 0x1c],0x0
MOV dword ptr [ESI + 0x220],EAX
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [ESI + 0x64]
MOV dword ptr [ESP + 0x14],EAX
ADD ESP,0x10
TEST EAX,EAX
MOV EDX,dword ptr [ESP + 0x8]
JZ 0x0004a6fe
MOV EAX,dword ptr [EAX + 0x24]
MOV dword ptr [ESI + 0x218],EAX
CMP EAX,0x7
JG 0x0004a208
MOV dword ptr [ESI + 0x218],0x8
MOV EAX,dword ptr [ESI + 0x74]
TEST EAX,EAX
JZ 0x0004a798
MOV EAX,dword ptr [EAX + 0x2c]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESI + 0x210],EAX
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JNZ 0x0004a220
MOV EAX,dword ptr [ESI + 0x7c]
TEST EAX,EAX
JNZ 0x0004a239
MOV dword ptr [ESP + 0x8],ECX
SUB ESP,0x8
MOV dword ptr [ESP + 0xc],EDX
PUSH 0x1
PUSH dword ptr [ESI + 0x218]
CALL 0x0002e780
MOV ECX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x4]
MOV dword ptr [ECX + 0x10],EAX
MOV dword ptr [ESI + 0x200],0x0
MOV dword ptr [ESI + 0x214],0x0
JMP 0x0004a15a
SUB ESP,0xc
BSWAP EAX
PUSH EAX
CALL 0x0002e1f0
ADD ESP,0x10
MOV ECX,EAX
MOV dword ptr [ESI + 0x200],EAX
JMP 0x0004a2f6
MOV dword ptr [ESI + 0x210],0x0
JMP 0x0004a737
MOV dword ptr [ESI + 0x1b4],0x6fc
XOR EAX,EAX
JMP 0x0004a01e
MOV dword ptr [ESI + 0x1b4],0x6b2
XOR EAX,EAX
JMP 0x0004a01e
MOV dword ptr [ESI + 0x1b4],0x728
XOR EAX,EAX
JMP 0x0004a01e
MOV dword ptr [ESI + 0x1b4],0x67c
XOR EAX,EAX
JMP 0x0004a01e
MOV dword ptr [ESI + 0x1b4],0x6de
XOR EAX,EAX
JMP 0x0004a01e
MOV dword ptr [ESI + 0x1b4],0x68d
XOR EAX,EAX
JMP 0x0004a01e
SUB ESP,0xc
LEA EAX,[EBX + 0xfffb12f8]
JMP 0x0004a660
MOV dword ptr [ESP + 0xc],ECX
SUB ESP,0x8
MOV dword ptr [ESP + 0xc],EDX
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x14]
ADD EAX,0x9000
PUSH EAX
CALL 0x0002e780
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x4]
MOV dword ptr [ECX + 0x10],EAX
MOV dword ptr [ESI + 0x214],0x0
JMP 0x0004a52a
SUB ESP,0xc
LEA EAX,[EBX + 0xfffb12a8]
JMP 0x0004a660
MOV EDX,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESI + 0x220]
LEA ECX,[EDX + 0x5]
MOV EAX,dword ptr [EDI + 0x10]
LEA EBP,[EDX + 0x4]
CMP EBP,dword ptr [EDI + 0x1c]
JGE 0x0004a8e9
MOV dword ptr [EDI],ECX
MOV EDI,dword ptr [ESP + 0x10]
ADD EAX,0x5
SUB ESP,0x4
PUSH EDX
PUSH EDI
PUSH EAX
CALL 0x0001a820
MOV dword ptr [ESP],EDI
CALL 0x0002f010
MOV EAX,dword ptr [ESI + 0x220]
ADD ESP,0x10
MOV EDX,dword ptr [EAX]
JMP 0x0004a4a6
SUB ESP,0xc
LEA EAX,[EBX + 0xfffb1324]
JMP 0x0004a660
SUB ESP,0x4
MOV dword ptr [EDI + 0x1c],ECX
PUSH 0x1
PUSH ECX
PUSH EAX
CALL 0x0002eb80
MOV EDX,dword ptr [ESP + 0x24]
ADD ESP,0x10
MOV dword ptr [EDI + 0x10],EAX
MOV EDI,dword ptr [ESI + 0x220]
LEA ECX,[EDX + 0x5]
MOV EAX,dword ptr [EDI + 0x10]
JMP 0x0004a8af
SUB ESP,0x8
PUSH EAX
PUSH ESI
CALL 0x00049f80
ADD ESP,0x10
XOR EAX,EAX
MOV dword ptr [ESI + 0x1b4],0x0
JMP 0x0004a01e
SUB ESP,0xc
LEA EAX,[EBX + 0xfffb12d4]
JMP 0x0004a660
MOV EAX,dword ptr [ESI + 0x220]
SUB ESP,0xc
MOV EAX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [EAX]
BSWAP EAX
PUSH EAX
CALL 0x0002e1f0
MOV EDX,dword ptr [ESI + 0x20c]
ADD ESP,0x10
MOV dword ptr [ESI + 0x200],EAX
LEA ECX,[EDX + -0x4]
CMP EAX,ECX
JNZ 0x0004a646
MOV EDI,dword ptr [ESI + 0x220]
ADD EDX,dword ptr [ESI + 0x210]
MOV dword ptr [EDI + 0x1c],EDX
PUSH EAX
PUSH 0x1
PUSH EDX
PUSH dword ptr [EDI + 0x10]
CALL 0x0002eb80
ADD ESP,0x10
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [ESI + 0x220]
MOV ECX,dword ptr [EAX + 0x10]
JMP 0x0004a412
CALL 0x000a39d0
LEA EAX,[EBX + 0xfffb1bbc]
PUSH EAX
LEA EAX,[EBX + 0xfffadadb]
PUSH 0x74f
PUSH EAX
LEA EAX,[EBX + 0xfffaeaaa]
PUSH EAX
CALL 0x0001c000
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint * FUN_00049fb0(int param_1,int *param_2,int *param_3)\n\n{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a39d0();\n}\n\n" comment (function_definition "int * FUN_00049fb0(int param_1,int *param_2,int *param_3)\n\n{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a39d0();\n}" primitive_type (pointer_declarator "* FUN_00049fb0(int param_1,int *param_2,int *param_3)" * (function_declarator "FUN_00049fb0(int param_1,int *param_2,int *param_3)" identifier (parameter_list "(int param_1,int *param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000a39d0();\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "void *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "size_t local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x49fb9;" (assignment_expression "uStack_14 = 0x49fb9" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" if (parenthesized_expression "(iVar8 == 0x6b2)" ( (binary_expression "iVar8 == 0x6b2" identifier == number_literal) )) (compound_statement "{\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" { (labeled_statement "LAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);" statement_identifier : (do_statement "do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);" do (compound_statement "{\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    }" { (if_statement "if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6b2;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6b2" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) })) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "(iVar8 < 4)" ( (binary_expression "iVar8 < 4" identifier < number_literal) )) ;)) (expression_statement "iVar8 = *(int *)(param_1 + 100);" (assignment_expression "iVar8 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "**(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))))) ;) (if_statement "if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" if (parenthesized_expression "((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0))" ( (binary_expression "(iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "((*(byte *)(iVar8 + 0x30) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x30) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x30) & 2)" ( (binary_expression "*(byte *)(iVar8 + 0x30) & 2" (pointer_expression "*(byte *)(iVar8 + 0x30)" * (cast_expression "(byte *)(iVar8 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" { (expression_statement "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" identifier = (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" identifier (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" * (cast_expression "(uint *)(param_1 + 0x200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" else (compound_statement "{\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" { (expression_statement "local_24 = uVar3;" (assignment_expression "local_24 = uVar3" identifier = identifier) ;) (expression_statement "(**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));" (call_expression "(**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(iVar8 + 0x1c))" ( (pointer_expression "**(code **)(iVar8 + 0x1c)" * (pointer_expression "*(code **)(iVar8 + 0x1c)" * (cast_expression "(code **)(iVar8 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (pointer_expression "&local_24" & identifier) , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" * (cast_expression "(undefined4 *)(param_1 + 0x21c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" identifier = (call_expression "FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" identifier (argument_list "(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" ( (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18" (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8" (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8" (binary_expression "local_24 >> 0x18" identifier >> number_literal) | (binary_expression "(local_24 & 0xff0000) >> 8" (parenthesized_expression "(local_24 & 0xff0000)" ( (binary_expression "local_24 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_24 & 0xff00) << 8" (parenthesized_expression "(local_24 & 0xff00)" ( (binary_expression "local_24 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_24 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" * (cast_expression "(uint *)(param_1 + 0x200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }" if (parenthesized_expression "((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0))" ( (binary_expression "(uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)" (parenthesized_expression "(uVar3 < 0x9001)" ( (binary_expression "uVar3 < 0x9001" identifier < number_literal) )) && (parenthesized_expression "((int)uVar3 % *(int *)(param_1 + 0x218) == 0)" ( (binary_expression "(int)uVar3 % *(int *)(param_1 + 0x218) == 0" (binary_expression "(int)uVar3 % *(int *)(param_1 + 0x218)" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) % (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }" { (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x20c) = uVar3 + 4;" (assignment_expression "*(uint *)(param_1 + 0x20c) = uVar3 + 4" (pointer_expression "*(uint *)(param_1 + 0x20c)" * (cast_expression "(uint *)(param_1 + 0x20c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = (binary_expression "uVar3 + 4" identifier + number_literal)) ;) (expression_statement "iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);" (assignment_expression "iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210)" identifier = (binary_expression "uVar3 + 4 + *(int *)(param_1 + 0x210)" (binary_expression "uVar3 + 4" identifier + number_literal) + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(iVar8 + 0x1c) = iVar10;" (assignment_expression "*(int *)(iVar8 + 0x1c) = iVar10" (pointer_expression "*(int *)(iVar8 + 0x1c)" * (cast_expression "(int *)(iVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" identifier = (call_expression "FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar8 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" identifier < (binary_expression "*(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))))) )) (compound_statement "{\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }" { (labeled_statement "LAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" statement_identifier : (if_statement "if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6de;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6de" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" ( (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" { (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x10" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , identifier , (binary_expression "*(int *)(param_1 + 0x200) + 4" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" * (cast_expression "(undefined4 *)(param_1 + 0x21c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" { (labeled_statement "LAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";" statement_identifier : (expression_statement "pcVar4 = "Incorrect MAC received on packet";" (assignment_expression "pcVar4 = "Incorrect MAC received on packet"" identifier = (string_literal ""Incorrect MAC received on packet"" " string_content ")) ;)) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" if (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" ( (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" { (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (binary_expression "iVar8 + 4" identifier + number_literal) , (binary_expression "*(int *)(param_1 + 0x20c) + -4" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);" statement_identifier : (expression_statement "uVar3 = (uint)*(byte *)(iVar8 + 4);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar8 + 4)" identifier = (binary_expression "(uint)*(byte *)(iVar8 + 4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar8 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*(uint *)(param_1 + 0x204) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x204) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x204)" * (cast_expression "(uint *)(param_1 + 0x204)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x204)" ( (binary_expression "param_1 + 0x204" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }" if (parenthesized_expression "((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10))" ( (binary_expression "(3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)" (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) && (parenthesized_expression "(iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)" ( (comma_expression "iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10" (assignment_expression "iVar10 = *(int *)(param_1 + 0x200) - uVar3" identifier = (binary_expression "*(int *)(param_1 + 0x200) - uVar3" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) - identifier)) , (binary_expression "0 < iVar10" number_literal < identifier)) ))) )) (compound_statement "{\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }" { (expression_statement "iVar11 = *(int *)(param_1 + 0x21c);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x21c)" identifier = (pointer_expression "*(int *)(param_1 + 0x21c)" * (cast_expression "(int *)(param_1 + 0x21c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x208) = iVar10 + -1;" (assignment_expression "*(int *)(param_1 + 0x208) = iVar10 + -1" (pointer_expression "*(int *)(param_1 + 0x208)" * (cast_expression "(int *)(param_1 + 0x208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x208)" ( (binary_expression "param_1 + 0x208" identifier + number_literal) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(param_1 + 0x20c);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x20c)" identifier = (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) ))))) ;) (expression_statement "piVar7[8] = iVar10;" (assignment_expression "piVar7[8] = iVar10" (subscript_expression "piVar7[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x21c) = iVar11 + 1;" (assignment_expression "*(int *)(param_1 + 0x21c) = iVar11 + 1" (pointer_expression "*(int *)(param_1 + 0x21c)" * (cast_expression "(int *)(param_1 + 0x21c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar7[3] = iVar11;" (assignment_expression "piVar7[3] = iVar11" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar10 = iVar10 - uVar3;" (assignment_expression "iVar10 = iVar10 - uVar3" identifier = (binary_expression "iVar10 - uVar3" identifier - identifier)) ;) (expression_statement "*piVar7 = iVar10;" (assignment_expression "*piVar7 = iVar10" (pointer_expression "*piVar7" * identifier) = identifier) ;) (if_statement "if (iVar10 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" { comment (expression_statement "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");" (call_expression "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" identifier (argument_list "("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" ( (string_literal ""st->pktin->length >= 0"" " string_content ") , (string_literal ""ssh.c"" " string_content ") , number_literal , (string_literal ""ssh2_rdpkt"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x8c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x8c) != 0" (pointer_expression "*(int *)(param_1 + 0x8c)" * (cast_expression "(int *)(param_1 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }" { (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" * (cast_expression "(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x8c) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x8c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x8c)" * (cast_expression "(int *)(param_1 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) , (binary_expression "iVar8 + 5" identifier + number_literal) , (binary_expression "iVar10 + -5" identifier + number_literal) , (pointer_expression "&local_2c" & identifier) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" { (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *piVar7;" (assignment_expression "iVar10 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) }) (else_clause "else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" else (compound_statement "{\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" { (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = local_28 + 5;" (assignment_expression "iVar8 = local_28 + 5" identifier = (binary_expression "local_28 + 5" identifier + number_literal)) ;) (expression_statement "iVar10 = piVar7[4];" (assignment_expression "iVar10 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (if_statement "if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }" if (parenthesized_expression "(piVar7[7] <= (int)(local_28 + 4))" ( (binary_expression "piVar7[7] <= (int)(local_28 + 4)" (subscript_expression "piVar7[7]" identifier [ number_literal ]) <= (cast_expression "(int)(local_28 + 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_28 + 4)" ( (binary_expression "local_28 + 4" identifier + number_literal) )))) )) (compound_statement "{\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }" { (expression_statement "piVar7[7] = iVar8;" (assignment_expression "piVar7[7] = iVar8" (subscript_expression "piVar7[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0002eb80(iVar10,iVar8,1);" (assignment_expression "iVar8 = FUN_0002eb80(iVar10,iVar8,1)" identifier = (call_expression "FUN_0002eb80(iVar10,iVar8,1)" identifier (argument_list "(iVar10,iVar8,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar7[4] = iVar8;" (assignment_expression "piVar7[4] = iVar8" (subscript_expression "piVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = local_28 + 5;" (assignment_expression "iVar8 = local_28 + 5" identifier = (binary_expression "local_28 + 5" identifier + number_literal)) ;) (expression_statement "iVar10 = piVar7[4];" (assignment_expression "iVar10 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (expression_statement "*piVar7 = iVar8;" (assignment_expression "*piVar7 = iVar8" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "memcpy((void *)(iVar10 + 5),local_2c,local_28);" (call_expression "memcpy((void *)(iVar10 + 5),local_2c,local_28)" identifier (argument_list "((void *)(iVar10 + 5),local_2c,local_28)" ( (cast_expression "(void *)(iVar10 + 5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 5)" ( (binary_expression "iVar10 + 5" identifier + number_literal) ))) , identifier , identifier ))) ;) (expression_statement "FUN_0002f010(local_2c);" (call_expression "FUN_0002f010(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *piVar7;" (assignment_expression "iVar10 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) }))) })) (if_statement "if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }" if (parenthesized_expression "(iVar10 < 6)" ( (binary_expression "iVar10 < 6" identifier < number_literal) )) (compound_statement "{\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }" { (expression_statement "FUN_00049f80(param_1,piVar7);" (call_expression "FUN_00049f80(param_1,piVar7)" identifier (argument_list "(param_1,piVar7)" ( identifier , identifier ))) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) })) (expression_statement "bVar1 = *(byte *)(piVar7[4] + 5);" (assignment_expression "bVar1 = *(byte *)(piVar7[4] + 5)" identifier = (pointer_expression "*(byte *)(piVar7[4] + 5)" * (cast_expression "(byte *)(piVar7[4] + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7[4] + 5)" ( (binary_expression "piVar7[4] + 5" (subscript_expression "piVar7[4]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "*piVar7 = iVar10 + -6;" (assignment_expression "*piVar7 = iVar10 + -6" (pointer_expression "*piVar7" * identifier) = (binary_expression "iVar10 + -6" identifier + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" identifier = (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) ))))) ;) (expression_statement "piVar7[5] = piVar7[4] + 6;" (assignment_expression "piVar7[5] = piVar7[4] + 6" (subscript_expression "piVar7[5]" identifier [ number_literal ]) = (binary_expression "piVar7[4] + 6" (subscript_expression "piVar7[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar7[2] = (uint)bVar1;" (assignment_expression "piVar7[2] = (uint)bVar1" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }" { (expression_statement "FUN_000399f0();" (call_expression "FUN_000399f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) })) (expression_statement "piVar7[6] = 0;" (assignment_expression "piVar7[6] = 0" (subscript_expression "piVar7[6]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0004a014;" goto statement_identifier ;) })) (expression_statement "pcVar4 = "Invalid padding length on received packet";" (assignment_expression "pcVar4 = "Invalid padding length on received packet"" identifier = (string_literal ""Invalid padding length on received packet"" " string_content ")) ;) }) (else_clause "else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }" else (compound_statement "{\n      pcVar4 = "Incoming packet length field was garbled";\n    }" { (expression_statement "pcVar4 = "Incoming packet length field was garbled";" (assignment_expression "pcVar4 = "Incoming packet length field was garbled"" identifier = (string_literal ""Incoming packet length field was garbled"" " string_content ")) ;) }))) (labeled_statement "LAB_0004a660:\n    FUN_0002edf0(pcVar4);" statement_identifier : (expression_statement "FUN_0002edf0(pcVar4);" (call_expression "FUN_0002edf0(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;)) (expression_statement "FUN_0003a2d0();" (call_expression "FUN_0003a2d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));" (call_expression "FUN_0002f010(*(undefined4 *)(iVar8 + 0x10))" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x10))" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0002f010(iVar8);" (call_expression "FUN_0002f010(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" else (compound_statement "{\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" { (if_statement "if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" if (parenthesized_expression "(iVar8 < 0x6b3)" ( (binary_expression "iVar8 < 0x6b3" identifier < number_literal) )) (compound_statement "{\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }" { (if_statement "if (iVar8 == 0x67c) goto LAB_0004a4f0;" if (parenthesized_expression "(iVar8 == 0x67c)" ( (binary_expression "iVar8 == 0x67c" identifier == number_literal) )) (goto_statement "goto LAB_0004a4f0;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x68d) goto LAB_0004a580;" if (parenthesized_expression "(iVar8 == 0x68d)" ( (binary_expression "iVar8 == 0x68d" identifier == number_literal) )) (goto_statement "goto LAB_0004a580;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }" { (expression_statement "puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);" (assignment_expression "puVar5 = (undefined4 *)FUN_0002e780(1,0x2c)" identifier = (cast_expression "(undefined4 *)FUN_0002e780(1,0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(1,0x2c)" identifier (argument_list "(1,0x2c)" ( number_literal , number_literal ))))) ;) (expression_statement "puVar5[4] = 0;" (assignment_expression "puVar5[4] = 0" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar5[5] = 0;" (assignment_expression "puVar5[5] = 0" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar5[7] = 0;" (assignment_expression "puVar5[7] = 0" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 **)(param_1 + 0x220) = puVar5;" (assignment_expression "*(undefined4 **)(param_1 + 0x220) = puVar5" (pointer_expression "*(undefined4 **)(param_1 + 0x220)" * (cast_expression "(undefined4 **)(param_1 + 0x220)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5[2] = 0;" (assignment_expression "puVar5[2] = 0" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "iVar8 = *(int *)(param_1 + 100);" (assignment_expression "iVar8 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) (if_statement "if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" if (parenthesized_expression "((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8))" ( (binary_expression "(iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)" ( (comma_expression "iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8" (assignment_expression "iVar10 = *(int *)(iVar8 + 0x24)" identifier = (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) ))))) , (comma_expression "*(int *)(param_1 + 0x218) = iVar10, iVar10 < 8" (assignment_expression "*(int *)(param_1 + 0x218) = iVar10" (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) = identifier) , (binary_expression "iVar10 < 8" identifier < number_literal))) ))) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }" { (expression_statement "*(undefined4 *)(param_1 + 0x218) = 8;" (assignment_expression "*(undefined4 *)(param_1 + 0x218) = 8" (pointer_expression "*(undefined4 *)(param_1 + 0x218)" * (cast_expression "(undefined4 *)(param_1 + 0x218)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;" if (parenthesized_expression "(*(int *)(param_1 + 0x74) == 0)" ( (binary_expression "*(int *)(param_1 + 0x74) == 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0004a798;" goto statement_identifier ;)) (expression_statement "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);" (assignment_expression "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x74) + 0x2c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x74) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x2c" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x210) = local_34;" (assignment_expression "*(int *)(param_1 + 0x210) = local_34" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar8 != 0) goto LAB_0004a220;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004a220;" goto statement_identifier ;)) (labeled_statement "LAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x7c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x7c) != 0" (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" { (labeled_statement "LAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);" statement_identifier : (expression_statement "uVar6 = FUN_0002e780(4,1);" (assignment_expression "uVar6 = FUN_0002e780(4,1)" identifier = (call_expression "FUN_0002e780(4,1)" identifier (argument_list "(4,1)" ( number_literal , number_literal )))) ;)) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x200) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x200) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x200)" * (cast_expression "(undefined4 *)(param_1 + 0x200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0004a267;" goto statement_identifier ;) }))) }) (else_clause "else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" else (compound_statement "{\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" { (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" ( (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" { (expression_statement "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);" (assignment_expression "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x74) + 0x2c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x74) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x2c" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x210) = local_34;" (assignment_expression "*(int *)(param_1 + 0x210) = local_34" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;" statement_identifier : (if_statement "if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x30) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x30) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x30) & 1)" ( (binary_expression "*(byte *)(iVar8 + 0x30) & 1" (pointer_expression "*(byte *)(iVar8 + 0x30)" * (cast_expression "(byte *)(iVar8 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0004a72c;" goto statement_identifier ;))) (if_statement "if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;" if (parenthesized_expression "(*(int *)(param_1 + 0x7c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x7c) != 0" (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0004a239;" goto statement_identifier ;)) (expression_statement "uVar6 = FUN_0002e780(local_34 + 0x9000,1);" (assignment_expression "uVar6 = FUN_0002e780(local_34 + 0x9000,1)" identifier = (call_expression "FUN_0002e780(local_34 + 0x9000,1)" identifier (argument_list "(local_34 + 0x9000,1)" ( (binary_expression "local_34 + 0x9000" identifier + number_literal) , number_literal )))) ;) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x210)" identifier < (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }" { (labeled_statement "LAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" statement_identifier : (if_statement "if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x67c;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x67c" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;" (assignment_expression "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2" (pointer_expression "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x20c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x20c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x20c)" * (cast_expression "(undefined4 *)(param_1 + 0x20c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x14" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) ))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x21c);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x21c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x21c)" * (cast_expression "(uint *)(param_1 + 0x21c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) ))))) ;) (expression_statement "local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;" (assignment_expression "local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x18" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),&local_24,4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , (pointer_expression "&local_24" & identifier) , number_literal ))) ;) (do_statement "do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);" do (compound_statement "{\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            }" { (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x218))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x218)" identifier < (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }" { (labeled_statement "LAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" statement_identifier : (if_statement "if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x68d;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x68d" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;" (assignment_expression "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2" (pointer_expression "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)" (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210)" (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) ))))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) , (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) ))) ;) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x18" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) , (pointer_expression "*(undefined4 *)(param_1 + 0x218)" * (cast_expression "(undefined4 *)(param_1 + 0x218)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) ))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c)" identifier = (binary_expression "*(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(param_1 + 0x20c) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x20c) = iVar8" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x20))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x20)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x20)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x20" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , (binary_expression "iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" identifier + (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) )))) ;) (if_statement "if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }" { (expression_statement "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "**(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);" (assignment_expression "iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" identifier = (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" identifier (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(int *)(param_1 + 0x200) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x200) = iVar8" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }" if (parenthesized_expression "(iVar8 == *(int *)(param_1 + 0x20c) + -4)" ( (binary_expression "iVar8 == *(int *)(param_1 + 0x20c) + -4" identifier == (binary_expression "*(int *)(param_1 + 0x20c) + -4" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + number_literal)) )) (compound_statement "{\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }" { (expression_statement "iVar10 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210)" identifier = (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(iVar10 + 0x1c) = iVar11;" (assignment_expression "*(int *)(iVar10 + 0x1c) = iVar11" (pointer_expression "*(int *)(iVar10 + 0x1c)" * (cast_expression "(int *)(iVar10 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" identifier = (call_expression "FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" identifier (argument_list "(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" ( (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) , identifier , number_literal , identifier )))) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar10 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0004a412;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "(*(uint *)(param_1 + 0x20c) < 0x9000)" ( (binary_expression "*(uint *)(param_1 + 0x20c) < 0x9000" (pointer_expression "*(uint *)(param_1 + 0x20c)" * (cast_expression "(uint *)(param_1 + 0x20c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) < number_literal) )) ;) (expression_statement "pcVar4 = "No valid incoming packet found";" (assignment_expression "pcVar4 = "No valid incoming packet found"" identifier = (string_literal ""No valid incoming packet found"" " string_content ")) ;) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (labeled_statement "LAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x210) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x210) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x210)" * (cast_expression "(undefined4 *)(param_1 + 0x210)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) = number_literal) ;)) }))) (expression_statement "uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);" (assignment_expression "uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1)" identifier = (call_expression "FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x218),1)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x218)" * (cast_expression "(undefined4 *)(param_1 + 0x218)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x200) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x200) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x200)" * (cast_expression "(undefined4 *)(param_1 + 0x200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x218))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x218)" identifier < (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" { (labeled_statement "LAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" statement_identifier : (if_statement "if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6fc;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6fc" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" ( (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }" { (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , identifier , (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) ))) ;) (expression_statement "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) ;) })) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" identifier = (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" identifier (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" * (cast_expression "(uint *)(param_1 + 0x200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" if (parenthesized_expression "((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0))" ( (binary_expression "(0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)" (parenthesized_expression "(0x9000 < uVar3)" ( (binary_expression "0x9000 < uVar3" number_literal < identifier) )) || (parenthesized_expression "(iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)" ( (comma_expression "iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0" (assignment_expression "iVar8 = uVar3 + 4" identifier = (binary_expression "uVar3 + 4" identifier + number_literal)) , (binary_expression "iVar8 % *(int *)(param_1 + 0x218) != 0" (binary_expression "iVar8 % *(int *)(param_1 + 0x218)" identifier % (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) != number_literal)) ))) )) (compound_statement "{\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" { (expression_statement "pcVar4 = "Incoming packet was garbled on decryption";" (assignment_expression "pcVar4 = "Incoming packet was garbled on decryption"" identifier = (string_literal ""Incoming packet was garbled on decryption"" " string_content ")) ;) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (expression_statement "iVar10 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x20c) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x20c) = iVar8" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = iVar8 + *(int *)(param_1 + 0x210);" (assignment_expression "iVar8 = iVar8 + *(int *)(param_1 + 0x210)" identifier = (binary_expression "iVar8 + *(int *)(param_1 + 0x210)" identifier + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(iVar10 + 0x1c) = iVar8;" (assignment_expression "*(int *)(iVar10 + 0x1c) = iVar8" (pointer_expression "*(int *)(iVar10 + 0x1c)" * (cast_expression "(int *)(iVar10 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" identifier = (call_expression "FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" identifier (argument_list "(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" ( (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar10 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x218);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x218)" identifier = (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" identifier < (binary_expression "*(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))))) )) (compound_statement "{\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" { (labeled_statement "LAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" statement_identifier : (if_statement "if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x728;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x728" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" if (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" ( (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" { (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (binary_expression "*(int *)(param_1 + 0x218) + iVar8" (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) + identifier) , (binary_expression "*(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" ( (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" { (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x10" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , identifier , (binary_expression "*(int *)(param_1 + 0x200) + 4" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" * (cast_expression "(undefined4 *)(param_1 + 0x21c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar8 == 0) goto LAB_0004a92e;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004a92e;" goto statement_identifier ;)) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_0004a412;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" else (compound_statement "{\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" { (if_statement "if (iVar8 == 0x6fc) goto LAB_0004a120;" if (parenthesized_expression "(iVar8 == 0x6fc)" ( (binary_expression "iVar8 == 0x6fc" identifier == number_literal) )) (goto_statement "goto LAB_0004a120;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x728) goto LAB_0004a360;" if (parenthesized_expression "(iVar8 == 0x728)" ( (binary_expression "iVar8 == 0x728" identifier == number_literal) )) (goto_statement "goto LAB_0004a360;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x6de) goto LAB_0004a060;" if (parenthesized_expression "(iVar8 == 0x6de)" ( (binary_expression "iVar8 == 0x6de" identifier == number_literal) )) (goto_statement "goto LAB_0004a060;" goto statement_identifier ;)) }))) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;)) }))) (labeled_statement "LAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return piVar7;\n  }" { (return_statement "return piVar7;" return identifier ;) }))) comment (expression_statement "FUN_000a39d0();" (call_expression "FUN_000a39d0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nPacket * ssh2_rdpkt(Ssh_conflict ssh,uchar **data,int *datalen)\n\n{\n  int iVar1;\n  byte bVar2;\n  uchar auVar3 [4];\n  ulong uVar4;\n  void *pvVar5;\n  ssh2_cipher *psVar6;\n  uint uVar7;\n  int iVar8;\n  char *pcVar9;\n  Packet *pPVar10;\n  uchar *puVar11;\n  int iVar12;\n  size_t sVar13;\n  uint *puVar14;\n  long lVar15;\n  int in_GS_OFFSET;\n  int local_34;\n  uchar *newpayload;\n  int newlen;\n  uchar seq [4];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = ssh->ssh2_rdpkt_crstate;\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    } while (iVar8 < 4);\n    psVar6 = ssh->sccipher;\n    auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data;\n    if ((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)) {\n      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    else {\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    if ((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)) {\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      (ssh->rdpkt2_state).packetlen = uVar7 + 4;\n      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;\n      pPVar10->maxlen = sVar13;\n      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n      pPVar10->data = puVar11;\n      iVar8 = 4;\n      (ssh->rdpkt2_state).i = 4;\n      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      puVar11 = pPVar10->data;\n      if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\n      if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\nLAB_0004a412:\n      uVar7 = (uint)puVar11[4];\n      (ssh->rdpkt2_state).pad = uVar7;\n      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }\n      pcVar9 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar9 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    pcVar9 = dupprintf(pcVar9);\n    bomb_out(ssh,pcVar9);\n    pPVar10 = (ssh->rdpkt2_state).pktin;\n    safefree(pPVar10->data);\n    safefree(pPVar10);\n    pPVar10 = (Packet *)0x0;\n    ssh->ssh2_rdpkt_crstate = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    pPVar10 = (ssh->rdpkt2_state).pktin;\nLAB_0004a014:\n    ssh->ssh2_rdpkt_crstate = 0;\n  }\nLAB_0004a01e:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pPVar10;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment comment (function_definition "Packet * ssh2_rdpkt(Ssh_conflict ssh,uchar **data,int *datalen)\n\n{\n  int iVar1;\n  byte bVar2;\n  uchar auVar3 [4];\n  ulong uVar4;\n  void *pvVar5;\n  ssh2_cipher *psVar6;\n  uint uVar7;\n  int iVar8;\n  char *pcVar9;\n  Packet *pPVar10;\n  uchar *puVar11;\n  int iVar12;\n  size_t sVar13;\n  uint *puVar14;\n  long lVar15;\n  int in_GS_OFFSET;\n  int local_34;\n  uchar *newpayload;\n  int newlen;\n  uchar seq [4];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = ssh->ssh2_rdpkt_crstate;\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    } while (iVar8 < 4);\n    psVar6 = ssh->sccipher;\n    auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data;\n    if ((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)) {\n      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    else {\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    if ((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)) {\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      (ssh->rdpkt2_state).packetlen = uVar7 + 4;\n      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;\n      pPVar10->maxlen = sVar13;\n      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n      pPVar10->data = puVar11;\n      iVar8 = 4;\n      (ssh->rdpkt2_state).i = 4;\n      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      puVar11 = pPVar10->data;\n      if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\n      if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\nLAB_0004a412:\n      uVar7 = (uint)puVar11[4];\n      (ssh->rdpkt2_state).pad = uVar7;\n      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }\n      pcVar9 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar9 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    pcVar9 = dupprintf(pcVar9);\n    bomb_out(ssh,pcVar9);\n    pPVar10 = (ssh->rdpkt2_state).pktin;\n    safefree(pPVar10->data);\n    safefree(pPVar10);\n    pPVar10 = (Packet *)0x0;\n    ssh->ssh2_rdpkt_crstate = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    pPVar10 = (ssh->rdpkt2_state).pktin;\nLAB_0004a014:\n    ssh->ssh2_rdpkt_crstate = 0;\n  }\nLAB_0004a01e:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pPVar10;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" type_identifier (pointer_declarator "* ssh2_rdpkt(Ssh_conflict ssh,uchar **data,int *datalen)" * (function_declarator "ssh2_rdpkt(Ssh_conflict ssh,uchar **data,int *datalen)" identifier (parameter_list "(Ssh_conflict ssh,uchar **data,int *datalen)" ( (parameter_declaration "Ssh_conflict ssh" type_identifier identifier) , (parameter_declaration "uchar **data" type_identifier (pointer_declarator "**data" * (pointer_declarator "*data" * identifier))) , (parameter_declaration "int *datalen" primitive_type (pointer_declarator "*datalen" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  uchar auVar3 [4];\n  ulong uVar4;\n  void *pvVar5;\n  ssh2_cipher *psVar6;\n  uint uVar7;\n  int iVar8;\n  char *pcVar9;\n  Packet *pPVar10;\n  uchar *puVar11;\n  int iVar12;\n  size_t sVar13;\n  uint *puVar14;\n  long lVar15;\n  int in_GS_OFFSET;\n  int local_34;\n  uchar *newpayload;\n  int newlen;\n  uchar seq [4];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = ssh->ssh2_rdpkt_crstate;\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    } while (iVar8 < 4);\n    psVar6 = ssh->sccipher;\n    auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data;\n    if ((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)) {\n      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    else {\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    if ((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)) {\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      (ssh->rdpkt2_state).packetlen = uVar7 + 4;\n      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;\n      pPVar10->maxlen = sVar13;\n      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n      pPVar10->data = puVar11;\n      iVar8 = 4;\n      (ssh->rdpkt2_state).i = 4;\n      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      puVar11 = pPVar10->data;\n      if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\n      if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\nLAB_0004a412:\n      uVar7 = (uint)puVar11[4];\n      (ssh->rdpkt2_state).pad = uVar7;\n      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }\n      pcVar9 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar9 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    pcVar9 = dupprintf(pcVar9);\n    bomb_out(ssh,pcVar9);\n    pPVar10 = (ssh->rdpkt2_state).pktin;\n    safefree(pPVar10->data);\n    safefree(pPVar10);\n    pPVar10 = (Packet *)0x0;\n    ssh->ssh2_rdpkt_crstate = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    pPVar10 = (ssh->rdpkt2_state).pktin;\nLAB_0004a014:\n    ssh->ssh2_rdpkt_crstate = 0;\n  }\nLAB_0004a01e:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pPVar10;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uchar auVar3 [4];" type_identifier (array_declarator "auVar3 [4]" identifier [ number_literal ]) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "ssh2_cipher *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "Packet *pPVar10;" type_identifier (pointer_declarator "*pPVar10" * identifier) ;) (declaration "uchar *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "size_t sVar13;" primitive_type identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uchar *newpayload;" type_identifier (pointer_declarator "*newpayload" * identifier) ;) (declaration "int newlen;" primitive_type identifier ;) (declaration "uchar seq [4];" type_identifier (array_declarator "seq [4]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = ssh->ssh2_rdpkt_crstate;" (assignment_expression "iVar8 = ssh->ssh2_rdpkt_crstate" identifier = (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier)) ;) (if_statement "if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    } while (iVar8 < 4);\n    psVar6 = ssh->sccipher;\n    auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data;\n    if ((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)) {\n      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    else {\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    if ((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)) {\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      (ssh->rdpkt2_state).packetlen = uVar7 + 4;\n      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;\n      pPVar10->maxlen = sVar13;\n      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n      pPVar10->data = puVar11;\n      iVar8 = 4;\n      (ssh->rdpkt2_state).i = 4;\n      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      puVar11 = pPVar10->data;\n      if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\n      if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\nLAB_0004a412:\n      uVar7 = (uint)puVar11[4];\n      (ssh->rdpkt2_state).pad = uVar7;\n      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }\n      pcVar9 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar9 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    pcVar9 = dupprintf(pcVar9);\n    bomb_out(ssh,pcVar9);\n    pPVar10 = (ssh->rdpkt2_state).pktin;\n    safefree(pPVar10->data);\n    safefree(pPVar10);\n    pPVar10 = (Packet *)0x0;\n    ssh->ssh2_rdpkt_crstate = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    pPVar10 = (ssh->rdpkt2_state).pktin;\nLAB_0004a014:\n    ssh->ssh2_rdpkt_crstate = 0;\n  }" if (parenthesized_expression "(iVar8 == 0x6b2)" ( (binary_expression "iVar8 == 0x6b2" identifier == number_literal) )) (compound_statement "{\nLAB_0004a267:\n    do {\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    } while (iVar8 < 4);\n    psVar6 = ssh->sccipher;\n    auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data;\n    if ((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)) {\n      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    else {\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    if ((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)) {\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      (ssh->rdpkt2_state).packetlen = uVar7 + 4;\n      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;\n      pPVar10->maxlen = sVar13;\n      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n      pPVar10->data = puVar11;\n      iVar8 = 4;\n      (ssh->rdpkt2_state).i = 4;\n      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      puVar11 = pPVar10->data;\n      if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\n      if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\nLAB_0004a412:\n      uVar7 = (uint)puVar11[4];\n      (ssh->rdpkt2_state).pad = uVar7;\n      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }\n      pcVar9 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar9 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    pcVar9 = dupprintf(pcVar9);\n    bomb_out(ssh,pcVar9);\n    pPVar10 = (ssh->rdpkt2_state).pktin;\n    safefree(pPVar10->data);\n    safefree(pPVar10);\n    pPVar10 = (Packet *)0x0;\n    ssh->ssh2_rdpkt_crstate = 0;\n  }" { (labeled_statement "LAB_0004a267:\n    do {\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    } while (iVar8 < 4);" statement_identifier : (do_statement "do {\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    } while (iVar8 < 4);" do (compound_statement "{\n      if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar11 = *data;\n      *data = puVar11 + 1;\n      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n      *datalen = *datalen + -1;\n      iVar8 = (ssh->rdpkt2_state).i + 1;\n      (ssh->rdpkt2_state).i = iVar8;\n    }" { (if_statement "if (*datalen == 0) {\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }" if (parenthesized_expression "(*datalen == 0)" ( (binary_expression "*datalen == 0" (pointer_expression "*datalen" * identifier) == number_literal) )) (compound_statement "{\n        ssh->ssh2_rdpkt_crstate = 0x6b2;\n        pPVar10 = (Packet *)0x0;\n        goto LAB_0004a01e;\n      }" { (expression_statement "ssh->ssh2_rdpkt_crstate = 0x6b2;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0x6b2" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) })) (expression_statement "puVar11 = *data;" (assignment_expression "puVar11 = *data" identifier = (pointer_expression "*data" * identifier)) ;) (expression_statement "*data = puVar11 + 1;" (assignment_expression "*data = puVar11 + 1" (pointer_expression "*data" * identifier) = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;" (assignment_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11" (subscript_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i]" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*datalen = *datalen + -1;" (assignment_expression "*datalen = *datalen + -1" (pointer_expression "*datalen" * identifier) = (binary_expression "*datalen + -1" (pointer_expression "*datalen" * identifier) + number_literal)) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).i + 1;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).i + 1" identifier = (binary_expression "(ssh->rdpkt2_state).i + 1" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "(ssh->rdpkt2_state).i = iVar8;" (assignment_expression "(ssh->rdpkt2_state).i = iVar8" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) while (parenthesized_expression "(iVar8 < 4)" ( (binary_expression "iVar8 < 4" identifier < number_literal) )) ;)) (expression_statement "psVar6 = ssh->sccipher;" (assignment_expression "psVar6 = ssh->sccipher" identifier = (field_expression "ssh->sccipher" identifier -> field_identifier)) ;) (expression_statement "auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data;" (assignment_expression "auVar3 = *(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data" identifier = (pointer_expression "*(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data" * (cast_expression "(uchar (*) [4])((ssh->rdpkt2_state).pktin)->data" ( (type_descriptor "uchar (*) [4]" type_identifier (abstract_array_declarator "(*) [4]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)))) ;) (if_statement "if ((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)) {\n      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }\n    else {\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }" if (parenthesized_expression "((psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0))" ( (binary_expression "(psVar6 == (ssh2_cipher *)0x0) || ((psVar6->flags & 2) == 0)" (parenthesized_expression "(psVar6 == (ssh2_cipher *)0x0)" ( (binary_expression "psVar6 == (ssh2_cipher *)0x0" identifier == (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((psVar6->flags & 2) == 0)" ( (binary_expression "(psVar6->flags & 2) == 0" (parenthesized_expression "(psVar6->flags & 2)" ( (binary_expression "psVar6->flags & 2" (field_expression "psVar6->flags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }" { (expression_statement "uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);" (assignment_expression "uVar7 = toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18)" identifier = (call_expression "toint((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18)" identifier (argument_list "((uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18)" ( (binary_expression "(uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18" (binary_expression "(uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8 |\n                    ((uint)auVar3 & 0xff00) << 8" (binary_expression "(uint)auVar3 >> 0x18 | ((uint)auVar3 & 0xff0000) >> 8" (binary_expression "(uint)auVar3 >> 0x18" (cast_expression "(uint)auVar3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)auVar3 & 0xff0000) >> 8" (parenthesized_expression "((uint)auVar3 & 0xff0000)" ( (binary_expression "(uint)auVar3 & 0xff0000" (cast_expression "(uint)auVar3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)auVar3 & 0xff00) << 8" (parenthesized_expression "((uint)auVar3 & 0xff00)" ( (binary_expression "(uint)auVar3 & 0xff00" (cast_expression "(uint)auVar3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)auVar3 << 0x18" (cast_expression "(int)auVar3" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )))) ;) (expression_statement "(ssh->rdpkt2_state).len = uVar7;" (assignment_expression "(ssh->rdpkt2_state).len = uVar7" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }" else (compound_statement "{\n      seq = auVar3;\n      (*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);\n      uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);\n      (ssh->rdpkt2_state).len = uVar7;\n    }" { (expression_statement "seq = auVar3;" (assignment_expression "seq = auVar3" identifier = identifier) ;) (expression_statement "(*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);" (call_expression "(*psVar6->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence)" (parenthesized_expression "(*psVar6->decrypt_length)" ( (pointer_expression "*psVar6->decrypt_length" * (field_expression "psVar6->decrypt_length" identifier -> field_identifier)) )) (argument_list "(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence)" ( (field_expression "ssh->sc_cipher_ctx" identifier -> field_identifier) , identifier , number_literal , (field_expression "(ssh->rdpkt2_state).incoming_sequence" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18);" (assignment_expression "uVar7 = toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18)" identifier = (call_expression "toint((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18)" identifier (argument_list "((uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18)" ( (binary_expression "(uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8 |\n                    (int)seq << 0x18" (binary_expression "(uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8 | ((uint)seq & 0xff00) << 8" (binary_expression "(uint)seq >> 0x18 | ((uint)seq & 0xff0000) >> 8" (binary_expression "(uint)seq >> 0x18" (cast_expression "(uint)seq" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)seq & 0xff0000) >> 8" (parenthesized_expression "((uint)seq & 0xff0000)" ( (binary_expression "(uint)seq & 0xff0000" (cast_expression "(uint)seq" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)seq & 0xff00) << 8" (parenthesized_expression "((uint)seq & 0xff00)" ( (binary_expression "(uint)seq & 0xff00" (cast_expression "(uint)seq" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)seq << 0x18" (cast_expression "(int)seq" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )))) ;) (expression_statement "(ssh->rdpkt2_state).len = uVar7;" (assignment_expression "(ssh->rdpkt2_state).len = uVar7" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) (if_statement "if ((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)) {\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      (ssh->rdpkt2_state).packetlen = uVar7 + 4;\n      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;\n      pPVar10->maxlen = sVar13;\n      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n      pPVar10->data = puVar11;\n      iVar8 = 4;\n      (ssh->rdpkt2_state).i = 4;\n      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      puVar11 = pPVar10->data;\n      if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\n      if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\nLAB_0004a412:\n      uVar7 = (uint)puVar11[4];\n      (ssh->rdpkt2_state).pad = uVar7;\n      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }\n      pcVar9 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar9 = "Incoming packet length field was garbled";\n    }" if (parenthesized_expression "((uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0))" ( (binary_expression "(uVar7 < 0x9001) && ((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)" (parenthesized_expression "(uVar7 < 0x9001)" ( (binary_expression "uVar7 < 0x9001" identifier < number_literal) )) && (parenthesized_expression "((int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0)" ( (binary_expression "(int)uVar7 % (ssh->rdpkt2_state).cipherblk == 0" (binary_expression "(int)uVar7 % (ssh->rdpkt2_state).cipherblk" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) % (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) == number_literal) ))) )) (compound_statement "{\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      (ssh->rdpkt2_state).packetlen = uVar7 + 4;\n      sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;\n      pPVar10->maxlen = sVar13;\n      puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n      pPVar10->data = puVar11;\n      iVar8 = 4;\n      (ssh->rdpkt2_state).i = 4;\n      while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }\n      pPVar10 = (ssh->rdpkt2_state).pktin;\n      puVar11 = pPVar10->data;\n      if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\n      if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }\nLAB_0004a412:\n      uVar7 = (uint)puVar11[4];\n      (ssh->rdpkt2_state).pad = uVar7;\n      if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }\n      pcVar9 = "Invalid padding length on received packet";\n    }" { (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(ssh->rdpkt2_state).packetlen = uVar7 + 4;" (assignment_expression "(ssh->rdpkt2_state).packetlen = uVar7 + 4" (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = (binary_expression "uVar7 + 4" identifier + number_literal)) ;) (expression_statement "sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen;" (assignment_expression "sVar13 = uVar7 + 4 + (ssh->rdpkt2_state).maclen" identifier = (binary_expression "uVar7 + 4 + (ssh->rdpkt2_state).maclen" (binary_expression "uVar7 + 4" identifier + number_literal) + (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pPVar10->maxlen = sVar13;" (assignment_expression "pPVar10->maxlen = sVar13" (field_expression "pPVar10->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);" (assignment_expression "puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1)" identifier = (cast_expression "(uchar *)saferealloc(pPVar10->data,sVar13,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(pPVar10->data,sVar13,1)" identifier (argument_list "(pPVar10->data,sVar13,1)" ( (field_expression "pPVar10->data" identifier -> field_identifier) , identifier , number_literal ))))) ;) (expression_statement "pPVar10->data = puVar11;" (assignment_expression "pPVar10->data = puVar11" (field_expression "pPVar10->data" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;) (expression_statement "(ssh->rdpkt2_state).i = 4;" (assignment_expression "(ssh->rdpkt2_state).i = 4" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (while_statement "while (iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }" while (parenthesized_expression "(iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen)" ( (binary_expression "iVar8 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen" identifier < (binary_expression "(ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen" (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\nLAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar11 = *data;\n        *data = puVar11 + 1;\n        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n        *datalen = *datalen + -1;\n        iVar8 = (ssh->rdpkt2_state).i + 1;\n        (ssh->rdpkt2_state).i = iVar8;\n      }" { (labeled_statement "LAB_0004a060:\n        if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }" statement_identifier : (if_statement "if (*datalen == 0) {\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }" if (parenthesized_expression "(*datalen == 0)" ( (binary_expression "*datalen == 0" (pointer_expression "*datalen" * identifier) == number_literal) )) (compound_statement "{\n          ssh->ssh2_rdpkt_crstate = 0x6de;\n          pPVar10 = (Packet *)0x0;\n          goto LAB_0004a01e;\n        }" { (expression_statement "ssh->ssh2_rdpkt_crstate = 0x6de;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0x6de" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar11 = *data;" (assignment_expression "puVar11 = *data" identifier = (pointer_expression "*data" * identifier)) ;) (expression_statement "*data = puVar11 + 1;" (assignment_expression "*data = puVar11 + 1" (pointer_expression "*data" * identifier) = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;" (assignment_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11" (subscript_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i]" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*datalen = *datalen + -1;" (assignment_expression "*datalen = *datalen + -1" (pointer_expression "*datalen" * identifier) = (binary_expression "*datalen + -1" (pointer_expression "*datalen" * identifier) + number_literal)) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).i + 1;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).i + 1" identifier = (binary_expression "(ssh->rdpkt2_state).i + 1" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "(ssh->rdpkt2_state).i = iVar8;" (assignment_expression "(ssh->rdpkt2_state).i = iVar8" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) (if_statement "if (ssh->scmac != (ssh_mac *)0x0) {\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }" if (parenthesized_expression "(ssh->scmac != (ssh_mac *)0x0)" ( (binary_expression "ssh->scmac != (ssh_mac *)0x0" (field_expression "ssh->scmac" identifier -> field_identifier) != (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }" { (expression_statement "iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence);" (assignment_expression "iVar8 = (*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence)" identifier = (call_expression "(*ssh->scmac->verify)\n                          (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence)" (parenthesized_expression "(*ssh->scmac->verify)" ( (pointer_expression "*ssh->scmac->verify" * (field_expression "ssh->scmac->verify" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                           (ssh->rdpkt2_state).incoming_sequence)" ( (field_expression "ssh->sc_mac_ctx" identifier -> field_identifier) , identifier , (binary_expression "(ssh->rdpkt2_state).len + 4" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal) , (field_expression "(ssh->rdpkt2_state).incoming_sequence" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )))) ;) (if_statement "if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" { (labeled_statement "LAB_0004a92e:\n          pcVar9 = "Incorrect MAC received on packet";" statement_identifier : (expression_statement "pcVar9 = "Incorrect MAC received on packet";" (assignment_expression "pcVar9 = "Incorrect MAC received on packet"" identifier = (string_literal ""Incorrect MAC received on packet"" " string_content ")) ;)) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) })) (if_statement "if (ssh->sccipher != (ssh2_cipher *)0x0) {\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }" if (parenthesized_expression "(ssh->sccipher != (ssh2_cipher *)0x0)" ( (binary_expression "ssh->sccipher != (ssh2_cipher *)0x0" (field_expression "ssh->sccipher" identifier -> field_identifier) != (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n      }" { (expression_statement "(*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)\n        ;" (call_expression "(*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)" (parenthesized_expression "(*ssh->sccipher->decrypt)" ( (pointer_expression "*ssh->sccipher->decrypt" * (field_expression "ssh->sccipher->decrypt" (field_expression "ssh->sccipher" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_cipher_ctx,puVar11 + 4,(ssh->rdpkt2_state).packetlen + -4)" ( (field_expression "ssh->sc_cipher_ctx" identifier -> field_identifier) , (binary_expression "puVar11 + 4" identifier + number_literal) , (binary_expression "(ssh->rdpkt2_state).packetlen + -4" (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal) ))) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_0004a412:\n      uVar7 = (uint)puVar11[4];" statement_identifier : (expression_statement "uVar7 = (uint)puVar11[4];" (assignment_expression "uVar7 = (uint)puVar11[4]" identifier = (cast_expression "(uint)puVar11[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar11[4]" identifier [ number_literal ]))) ;)) (expression_statement "(ssh->rdpkt2_state).pad = uVar7;" (assignment_expression "(ssh->rdpkt2_state).pad = uVar7" (field_expression "(ssh->rdpkt2_state).pad" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)) {\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }" if (parenthesized_expression "((3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8))" ( (binary_expression "(3 < uVar7) && (iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)" (parenthesized_expression "(3 < uVar7)" ( (binary_expression "3 < uVar7" number_literal < identifier) )) && (parenthesized_expression "(iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8)" ( (comma_expression "iVar8 = (ssh->rdpkt2_state).len - uVar7, 0 < iVar8" (assignment_expression "iVar8 = (ssh->rdpkt2_state).len - uVar7" identifier = (binary_expression "(ssh->rdpkt2_state).len - uVar7" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) - identifier)) , (binary_expression "0 < iVar8" number_literal < identifier)) ))) )) (compound_statement "{\n        uVar4 = (ssh->rdpkt2_state).incoming_sequence;\n        (ssh->rdpkt2_state).payload = iVar8 + -1;\n        iVar8 = (ssh->rdpkt2_state).packetlen;\n        pPVar10->encrypted_len = iVar8;\n        (ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;\n        pPVar10->sequence = uVar4;\n        lVar15 = iVar8 - uVar7;\n        pPVar10->length = lVar15;\n        if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }\n        if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }\n        bVar2 = pPVar10->data[5];\n        pPVar10->length = lVar15 + -6;\n        pvVar5 = ssh->logctx;\n        pPVar10->body = pPVar10->data + 6;\n        pPVar10->type = (uint)bVar2;\n        if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }\n        pPVar10->savedpos = 0;\n        goto LAB_0004a014;\n      }" { (expression_statement "uVar4 = (ssh->rdpkt2_state).incoming_sequence;" (assignment_expression "uVar4 = (ssh->rdpkt2_state).incoming_sequence" identifier = (field_expression "(ssh->rdpkt2_state).incoming_sequence" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(ssh->rdpkt2_state).payload = iVar8 + -1;" (assignment_expression "(ssh->rdpkt2_state).payload = iVar8 + -1" (field_expression "(ssh->rdpkt2_state).payload" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).packetlen;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).packetlen" identifier = (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pPVar10->encrypted_len = iVar8;" (assignment_expression "pPVar10->encrypted_len = iVar8" (field_expression "pPVar10->encrypted_len" identifier -> field_identifier) = identifier) ;) (expression_statement "(ssh->rdpkt2_state).incoming_sequence = uVar4 + 1;" (assignment_expression "(ssh->rdpkt2_state).incoming_sequence = uVar4 + 1" (field_expression "(ssh->rdpkt2_state).incoming_sequence" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "pPVar10->sequence = uVar4;" (assignment_expression "pPVar10->sequence = uVar4" (field_expression "pPVar10->sequence" identifier -> field_identifier) = identifier) ;) (expression_statement "lVar15 = iVar8 - uVar7;" (assignment_expression "lVar15 = iVar8 - uVar7" identifier = (binary_expression "iVar8 - uVar7" identifier - identifier)) ;) (expression_statement "pPVar10->length = lVar15;" (assignment_expression "pPVar10->length = lVar15" (field_expression "pPVar10->length" identifier -> field_identifier) = identifier) ;) (if_statement "if (lVar15 < 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" if (parenthesized_expression "(lVar15 < 0)" ( (binary_expression "lVar15 < 0" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" { comment (expression_statement "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");" (call_expression "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" identifier (argument_list "("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" ( (string_literal ""st->pktin->length >= 0"" " string_content ") , (string_literal ""ssh.c"" " string_content ") , number_literal , (string_literal ""ssh2_rdpkt"" " string_content ") ))) ;) })) (if_statement "if (ssh->sccomp != (ssh_compress *)0x0) {\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }" if (parenthesized_expression "(ssh->sccomp != (ssh_compress *)0x0)" ( (binary_expression "ssh->sccomp != (ssh_compress *)0x0" (field_expression "ssh->sccomp" identifier -> field_identifier) != (cast_expression "(ssh_compress *)0x0" ( (type_descriptor "ssh_compress *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);\n          if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n        }" { (expression_statement "iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen);" (assignment_expression "iVar8 = (*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen)" identifier = (call_expression "(*ssh->sccomp->decompress)\n                            (ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen)" (parenthesized_expression "(*ssh->sccomp->decompress)" ( (pointer_expression "*ssh->sccomp->decompress" * (field_expression "ssh->sccomp->decompress" (field_expression "ssh->sccomp" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_comp_ctx,puVar11 + 5,lVar15 + -5,&newpayload,&newlen)" ( (field_expression "ssh->sc_comp_ctx" identifier -> field_identifier) , (binary_expression "puVar11 + 5" identifier + number_literal) , (binary_expression "lVar15 + -5" identifier + number_literal) , (pointer_expression "&newpayload" & identifier) , (pointer_expression "&newlen" & identifier) )))) ;) (if_statement "if (iVar8 == 0) {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }\n          else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }" { (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "lVar15 = pPVar10->length;" (assignment_expression "lVar15 = pPVar10->length" identifier = (field_expression "pPVar10->length" identifier -> field_identifier)) ;) }) (else_clause "else {\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }" else (compound_statement "{\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            sVar13 = newlen + 5;\n            puVar11 = pPVar10->data;\n            if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }\n            pPVar10->length = sVar13;\n            memcpy(puVar11 + 5,newpayload,newlen);\n            safefree(newpayload);\n            pPVar10 = (ssh->rdpkt2_state).pktin;\n            lVar15 = pPVar10->length;\n          }" { (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "sVar13 = newlen + 5;" (assignment_expression "sVar13 = newlen + 5" identifier = (binary_expression "newlen + 5" identifier + number_literal)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) (if_statement "if (pPVar10->maxlen <= newlen + 4) {\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }" if (parenthesized_expression "(pPVar10->maxlen <= newlen + 4)" ( (binary_expression "pPVar10->maxlen <= newlen + 4" (field_expression "pPVar10->maxlen" identifier -> field_identifier) <= (binary_expression "newlen + 4" identifier + number_literal)) )) (compound_statement "{\n              pPVar10->maxlen = sVar13;\n              puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);\n              pPVar10->data = puVar11;\n              pPVar10 = (ssh->rdpkt2_state).pktin;\n              sVar13 = newlen + 5;\n              puVar11 = pPVar10->data;\n            }" { (expression_statement "pPVar10->maxlen = sVar13;" (assignment_expression "pPVar10->maxlen = sVar13" (field_expression "pPVar10->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar11 = (uchar *)saferealloc(puVar11,sVar13,1);" (assignment_expression "puVar11 = (uchar *)saferealloc(puVar11,sVar13,1)" identifier = (cast_expression "(uchar *)saferealloc(puVar11,sVar13,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(puVar11,sVar13,1)" identifier (argument_list "(puVar11,sVar13,1)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "pPVar10->data = puVar11;" (assignment_expression "pPVar10->data = puVar11" (field_expression "pPVar10->data" identifier -> field_identifier) = identifier) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "sVar13 = newlen + 5;" (assignment_expression "sVar13 = newlen + 5" identifier = (binary_expression "newlen + 5" identifier + number_literal)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) })) (expression_statement "pPVar10->length = sVar13;" (assignment_expression "pPVar10->length = sVar13" (field_expression "pPVar10->length" identifier -> field_identifier) = identifier) ;) (expression_statement "memcpy(puVar11 + 5,newpayload,newlen);" (call_expression "memcpy(puVar11 + 5,newpayload,newlen)" identifier (argument_list "(puVar11 + 5,newpayload,newlen)" ( (binary_expression "puVar11 + 5" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "safefree(newpayload);" (call_expression "safefree(newpayload)" identifier (argument_list "(newpayload)" ( identifier ))) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "lVar15 = pPVar10->length;" (assignment_expression "lVar15 = pPVar10->length" identifier = (field_expression "pPVar10->length" identifier -> field_identifier)) ;) }))) })) (if_statement "if (lVar15 < 6) {\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }" if (parenthesized_expression "(lVar15 < 6)" ( (binary_expression "lVar15 < 6" identifier < number_literal) )) (compound_statement "{\n          ssh2_msg_something_unimplemented(ssh,pPVar10);\n          pPVar10 = (Packet *)0x0;\n          ssh->ssh2_rdpkt_crstate = 0;\n          goto LAB_0004a01e;\n        }" { (expression_statement "ssh2_msg_something_unimplemented(ssh,pPVar10);" (call_expression "ssh2_msg_something_unimplemented(ssh,pPVar10)" identifier (argument_list "(ssh,pPVar10)" ( identifier , identifier ))) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ssh->ssh2_rdpkt_crstate = 0;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) })) (expression_statement "bVar2 = pPVar10->data[5];" (assignment_expression "bVar2 = pPVar10->data[5]" identifier = (subscript_expression "pPVar10->data[5]" (field_expression "pPVar10->data" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pPVar10->length = lVar15 + -6;" (assignment_expression "pPVar10->length = lVar15 + -6" (field_expression "pPVar10->length" identifier -> field_identifier) = (binary_expression "lVar15 + -6" identifier + number_literal)) ;) (expression_statement "pvVar5 = ssh->logctx;" (assignment_expression "pvVar5 = ssh->logctx" identifier = (field_expression "ssh->logctx" identifier -> field_identifier)) ;) (expression_statement "pPVar10->body = pPVar10->data + 6;" (assignment_expression "pPVar10->body = pPVar10->data + 6" (field_expression "pPVar10->body" identifier -> field_identifier) = (binary_expression "pPVar10->data + 6" (field_expression "pPVar10->data" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pPVar10->type = (uint)bVar2;" (assignment_expression "pPVar10->type = (uint)bVar2" (field_expression "pPVar10->type" identifier -> field_identifier) = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (pvVar5 != (void *)0x0) {\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }" if (parenthesized_expression "(pvVar5 != (void *)0x0)" ( (binary_expression "pvVar5 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          ssh2_log_incoming_packet(ssh,pPVar10);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n        }" { (expression_statement "ssh2_log_incoming_packet(ssh,pPVar10);" (call_expression "ssh2_log_incoming_packet(ssh,pPVar10)" identifier (argument_list "(ssh,pPVar10)" ( identifier , identifier ))) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "pPVar10->savedpos = 0;" (assignment_expression "pPVar10->savedpos = 0" (field_expression "pPVar10->savedpos" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_0004a014;" goto statement_identifier ;) })) (expression_statement "pcVar9 = "Invalid padding length on received packet";" (assignment_expression "pcVar9 = "Invalid padding length on received packet"" identifier = (string_literal ""Invalid padding length on received packet"" " string_content ")) ;) }) (else_clause "else {\n      pcVar9 = "Incoming packet length field was garbled";\n    }" else (compound_statement "{\n      pcVar9 = "Incoming packet length field was garbled";\n    }" { (expression_statement "pcVar9 = "Incoming packet length field was garbled";" (assignment_expression "pcVar9 = "Incoming packet length field was garbled"" identifier = (string_literal ""Incoming packet length field was garbled"" " string_content ")) ;) }))) (labeled_statement "LAB_0004a660:\n    pcVar9 = dupprintf(pcVar9);" statement_identifier : (expression_statement "pcVar9 = dupprintf(pcVar9);" (assignment_expression "pcVar9 = dupprintf(pcVar9)" identifier = (call_expression "dupprintf(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;)) (expression_statement "bomb_out(ssh,pcVar9);" (call_expression "bomb_out(ssh,pcVar9)" identifier (argument_list "(ssh,pcVar9)" ( identifier , identifier ))) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "safefree(pPVar10->data);" (call_expression "safefree(pPVar10->data)" identifier (argument_list "(pPVar10->data)" ( (field_expression "pPVar10->data" identifier -> field_identifier) ))) ;) (expression_statement "safefree(pPVar10);" (call_expression "safefree(pPVar10)" identifier (argument_list "(pPVar10)" ( identifier ))) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ssh->ssh2_rdpkt_crstate = 0;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    pPVar10 = (ssh->rdpkt2_state).pktin;\nLAB_0004a014:\n    ssh->ssh2_rdpkt_crstate = 0;\n  }" else (compound_statement "{\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    pPVar10 = (ssh->rdpkt2_state).pktin;\nLAB_0004a014:\n    ssh->ssh2_rdpkt_crstate = 0;\n  }" { (if_statement "if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" if (parenthesized_expression "(iVar8 < 0x6b3)" ( (binary_expression "iVar8 < 0x6b3" identifier < number_literal) )) (compound_statement "{\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }\n    }" { (if_statement "if (iVar8 == 0x67c) goto LAB_0004a4f0;" if (parenthesized_expression "(iVar8 == 0x67c)" ( (binary_expression "iVar8 == 0x67c" identifier == number_literal) )) (goto_statement "goto LAB_0004a4f0;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x68d) goto LAB_0004a580;" if (parenthesized_expression "(iVar8 == 0x68d)" ( (binary_expression "iVar8 == 0x68d" identifier == number_literal) )) (goto_statement "goto LAB_0004a580;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0) {\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        pPVar10 = (Packet *)safemalloc(1,0x2c);\n        pPVar10->data = (uchar *)0x0;\n        pPVar10->body = (uchar *)0x0;\n        pPVar10->maxlen = 0;\n        (ssh->rdpkt2_state).pktin = pPVar10;\n        pPVar10->type = 0;\n        pPVar10->length = 0;\n        psVar6 = ssh->sccipher;\n        if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }\n        puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);\n        pPVar10->data = puVar11;\n        (ssh->rdpkt2_state).len = 0;\n        (ssh->rdpkt2_state).i = 0;\n        iVar8 = 0;\n        while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }\n        uVar7 = *puVar14;\n        uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);\n        (ssh->rdpkt2_state).len = uVar7;\n        if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        (ssh->rdpkt2_state).packetlen = iVar8;\n        sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n        pPVar10->maxlen = sVar13;\n        puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n        pPVar10->data = puVar11;\n        iVar8 = (ssh->rdpkt2_state).cipherblk;\n        (ssh->rdpkt2_state).i = iVar8;\n        while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }\n        pPVar10 = (ssh->rdpkt2_state).pktin;\n        puVar11 = pPVar10->data;\n        if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }\n        goto LAB_0004a412;\n      }" { (expression_statement "pPVar10 = (Packet *)safemalloc(1,0x2c);" (assignment_expression "pPVar10 = (Packet *)safemalloc(1,0x2c)" identifier = (cast_expression "(Packet *)safemalloc(1,0x2c)" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(1,0x2c)" identifier (argument_list "(1,0x2c)" ( number_literal , number_literal ))))) ;) (expression_statement "pPVar10->data = (uchar *)0x0;" (assignment_expression "pPVar10->data = (uchar *)0x0" (field_expression "pPVar10->data" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar10->body = (uchar *)0x0;" (assignment_expression "pPVar10->body = (uchar *)0x0" (field_expression "pPVar10->body" identifier -> field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar10->maxlen = 0;" (assignment_expression "pPVar10->maxlen = 0" (field_expression "pPVar10->maxlen" identifier -> field_identifier) = number_literal) ;) (expression_statement "(ssh->rdpkt2_state).pktin = pPVar10;" (assignment_expression "(ssh->rdpkt2_state).pktin = pPVar10" (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pPVar10->type = 0;" (assignment_expression "pPVar10->type = 0" (field_expression "pPVar10->type" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar10->length = 0;" (assignment_expression "pPVar10->length = 0" (field_expression "pPVar10->length" identifier -> field_identifier) = number_literal) ;) (expression_statement "psVar6 = ssh->sccipher;" (assignment_expression "psVar6 = ssh->sccipher" identifier = (field_expression "ssh->sccipher" identifier -> field_identifier)) ;) (if_statement "if ((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)) {\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }" if (parenthesized_expression "((psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8))" ( (binary_expression "(psVar6 == (ssh2_cipher *)0x0) ||\n           (iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)" (parenthesized_expression "(psVar6 == (ssh2_cipher *)0x0)" ( (binary_expression "psVar6 == (ssh2_cipher *)0x0" identifier == (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8)" ( (comma_expression "iVar8 = psVar6->blksize, (ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8" (assignment_expression "iVar8 = psVar6->blksize" identifier = (field_expression "psVar6->blksize" identifier -> field_identifier)) , (comma_expression "(ssh->rdpkt2_state).cipherblk = iVar8, iVar8 < 8" (assignment_expression "(ssh->rdpkt2_state).cipherblk = iVar8" (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) , (binary_expression "iVar8 < 8" identifier < number_literal))) ))) )) (compound_statement "{\n          (ssh->rdpkt2_state).cipherblk = 8;\n          if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;\n          local_34 = ssh->scmac->len;\n          (ssh->rdpkt2_state).maclen = local_34;\n          if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }\n        }" { (expression_statement "(ssh->rdpkt2_state).cipherblk = 8;" (assignment_expression "(ssh->rdpkt2_state).cipherblk = 8" (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (if_statement "if (ssh->scmac == (ssh_mac *)0x0) goto LAB_0004a798;" if (parenthesized_expression "(ssh->scmac == (ssh_mac *)0x0)" ( (binary_expression "ssh->scmac == (ssh_mac *)0x0" (field_expression "ssh->scmac" identifier -> field_identifier) == (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004a798;" goto statement_identifier ;)) (expression_statement "local_34 = ssh->scmac->len;" (assignment_expression "local_34 = ssh->scmac->len" identifier = (field_expression "ssh->scmac->len" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "(ssh->rdpkt2_state).maclen = local_34;" (assignment_expression "(ssh->rdpkt2_state).maclen = local_34" (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (psVar6 != (ssh2_cipher *)0x0) goto LAB_0004a220;" if (parenthesized_expression "(psVar6 != (ssh2_cipher *)0x0)" ( (binary_expression "psVar6 != (ssh2_cipher *)0x0" identifier != (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004a220;" goto statement_identifier ;)) (labeled_statement "LAB_0004a72c:\n          if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }" statement_identifier : (if_statement "if (ssh->scmac_etm != 0) {\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }" if (parenthesized_expression "(ssh->scmac_etm != 0)" ( (binary_expression "ssh->scmac_etm != 0" (field_expression "ssh->scmac_etm" identifier -> field_identifier) != number_literal) )) (compound_statement "{\nLAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).len = 0;\n            (ssh->rdpkt2_state).i = 0;\n            goto LAB_0004a267;\n          }" { (labeled_statement "LAB_0004a239:\n            puVar11 = (uchar *)safemalloc(4,1);" statement_identifier : (expression_statement "puVar11 = (uchar *)safemalloc(4,1);" (assignment_expression "puVar11 = (uchar *)safemalloc(4,1)" identifier = (cast_expression "(uchar *)safemalloc(4,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(4,1)" identifier (argument_list "(4,1)" ( number_literal , number_literal ))))) ;)) (expression_statement "pPVar10->data = puVar11;" (assignment_expression "pPVar10->data = puVar11" (field_expression "pPVar10->data" identifier -> field_identifier) = identifier) ;) (expression_statement "(ssh->rdpkt2_state).len = 0;" (assignment_expression "(ssh->rdpkt2_state).len = 0" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(ssh->rdpkt2_state).i = 0;" (assignment_expression "(ssh->rdpkt2_state).i = 0" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (goto_statement "goto LAB_0004a267;" goto statement_identifier ;) }))) }) (else_clause "else {\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }" else (compound_statement "{\n          if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;\n        }" { (if_statement "if (ssh->scmac != (ssh_mac *)0x0) {\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" if (parenthesized_expression "(ssh->scmac != (ssh_mac *)0x0)" ( (binary_expression "ssh->scmac != (ssh_mac *)0x0" (field_expression "ssh->scmac" identifier -> field_identifier) != (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_34 = ssh->scmac->len;\n            (ssh->rdpkt2_state).maclen = local_34;\nLAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;\n            if (ssh->scmac_etm != 0) goto LAB_0004a239;\n            puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);\n            pPVar10->data = puVar11;\n            (ssh->rdpkt2_state).i = 0;\n            iVar8 = 0;\n            while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }\n            (ssh->rdpkt2_state).packetlen = 0;\n            (*ssh->scmac->start)(ssh->sc_mac_ctx);\n            uVar7 = (ssh->rdpkt2_state).incoming_sequence;\n            seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);\n            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);\n            do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);\n            pcVar9 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" { (expression_statement "local_34 = ssh->scmac->len;" (assignment_expression "local_34 = ssh->scmac->len" identifier = (field_expression "ssh->scmac->len" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "(ssh->rdpkt2_state).maclen = local_34;" (assignment_expression "(ssh->rdpkt2_state).maclen = local_34" (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (labeled_statement "LAB_0004a220:\n            if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;" statement_identifier : (if_statement "if ((psVar6->flags & 1) == 0) goto LAB_0004a72c;" if (parenthesized_expression "((psVar6->flags & 1) == 0)" ( (binary_expression "(psVar6->flags & 1) == 0" (parenthesized_expression "(psVar6->flags & 1)" ( (binary_expression "psVar6->flags & 1" (field_expression "psVar6->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0004a72c;" goto statement_identifier ;))) (if_statement "if (ssh->scmac_etm != 0) goto LAB_0004a239;" if (parenthesized_expression "(ssh->scmac_etm != 0)" ( (binary_expression "ssh->scmac_etm != 0" (field_expression "ssh->scmac_etm" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_0004a239;" goto statement_identifier ;)) (expression_statement "puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1);" (assignment_expression "puVar11 = (uchar *)safemalloc(local_34 + 0x9000,1)" identifier = (cast_expression "(uchar *)safemalloc(local_34 + 0x9000,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc(local_34 + 0x9000,1)" identifier (argument_list "(local_34 + 0x9000,1)" ( (binary_expression "local_34 + 0x9000" identifier + number_literal) , number_literal ))))) ;) (expression_statement "pPVar10->data = puVar11;" (assignment_expression "pPVar10->data = puVar11" (field_expression "pPVar10->data" identifier -> field_identifier) = identifier) ;) (expression_statement "(ssh->rdpkt2_state).i = 0;" (assignment_expression "(ssh->rdpkt2_state).i = 0" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar8 < (ssh->rdpkt2_state).maclen) {\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }" while (parenthesized_expression "(iVar8 < (ssh->rdpkt2_state).maclen)" ( (binary_expression "iVar8 < (ssh->rdpkt2_state).maclen" identifier < (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\nLAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar11 = *data;\n              *data = puVar11 + 1;\n              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n              *datalen = *datalen + -1;\n              iVar8 = (ssh->rdpkt2_state).i + 1;\n              (ssh->rdpkt2_state).i = iVar8;\n            }" { (labeled_statement "LAB_0004a4f0:\n              if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }" statement_identifier : (if_statement "if (*datalen == 0) {\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }" if (parenthesized_expression "(*datalen == 0)" ( (binary_expression "*datalen == 0" (pointer_expression "*datalen" * identifier) == number_literal) )) (compound_statement "{\n                ssh->ssh2_rdpkt_crstate = 0x67c;\n                pPVar10 = (Packet *)0x0;\n                goto LAB_0004a01e;\n              }" { (expression_statement "ssh->ssh2_rdpkt_crstate = 0x67c;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0x67c" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar11 = *data;" (assignment_expression "puVar11 = *data" identifier = (pointer_expression "*data" * identifier)) ;) (expression_statement "*data = puVar11 + 1;" (assignment_expression "*data = puVar11 + 1" (pointer_expression "*data" * identifier) = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;" (assignment_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11" (subscript_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i]" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*datalen = *datalen + -1;" (assignment_expression "*datalen = *datalen + -1" (pointer_expression "*datalen" * identifier) = (binary_expression "*datalen + -1" (pointer_expression "*datalen" * identifier) + number_literal)) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).i + 1;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).i + 1" identifier = (binary_expression "(ssh->rdpkt2_state).i + 1" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "(ssh->rdpkt2_state).i = iVar8;" (assignment_expression "(ssh->rdpkt2_state).i = iVar8" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "(ssh->rdpkt2_state).packetlen = 0;" (assignment_expression "(ssh->rdpkt2_state).packetlen = 0" (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(*ssh->scmac->start)(ssh->sc_mac_ctx);" (call_expression "(*ssh->scmac->start)(ssh->sc_mac_ctx)" (parenthesized_expression "(*ssh->scmac->start)" ( (pointer_expression "*ssh->scmac->start" * (field_expression "ssh->scmac->start" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_mac_ctx)" ( (field_expression "ssh->sc_mac_ctx" identifier -> field_identifier) ))) ;) (expression_statement "uVar7 = (ssh->rdpkt2_state).incoming_sequence;" (assignment_expression "uVar7 = (ssh->rdpkt2_state).incoming_sequence" identifier = (field_expression "(ssh->rdpkt2_state).incoming_sequence" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18);" (assignment_expression "seq = (uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18)" identifier = (call_expression "(uchar  [4])\n                  (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18)" (parenthesized_expression "(uchar  [4])" ( (subscript_expression "uchar  [4]" identifier [ number_literal ]) )) (argument_list "(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18)" ( (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "(*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);" (call_expression "(*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4)" (parenthesized_expression "(*ssh->scmac->bytes)" ( (pointer_expression "*ssh->scmac->bytes" * (field_expression "ssh->scmac->bytes" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_mac_ctx,seq,4)" ( (field_expression "ssh->sc_mac_ctx" identifier -> field_identifier) , identifier , number_literal ))) ;) (do_statement "do {\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            } while ((uint)(ssh->rdpkt2_state).packetlen < 0x9000);" do (compound_statement "{\n              (ssh->rdpkt2_state).i = 0;\n              iVar8 = 0;\n              while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }\n              (*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);\n              (*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);\n              iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;\n              (ssh->rdpkt2_state).packetlen = iVar8;\n              iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);\n              if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }\n            }" { (expression_statement "(ssh->rdpkt2_state).i = 0;" (assignment_expression "(ssh->rdpkt2_state).i = 0" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }" while (parenthesized_expression "(iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12)" ( (comma_expression "iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12" (assignment_expression "iVar12 = (ssh->rdpkt2_state).cipherblk" identifier = (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "iVar8 < iVar12" identifier < identifier)) )) (compound_statement "{\nLAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar11 = *data;\n                pPVar10 = (ssh->rdpkt2_state).pktin;\n                *data = puVar11 + 1;\n                pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;\n                *datalen = *datalen + -1;\n                iVar8 = (ssh->rdpkt2_state).i + 1;\n                (ssh->rdpkt2_state).i = iVar8;\n              }" { (labeled_statement "LAB_0004a580:\n                if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }" statement_identifier : (if_statement "if (*datalen == 0) {\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }" if (parenthesized_expression "(*datalen == 0)" ( (binary_expression "*datalen == 0" (pointer_expression "*datalen" * identifier) == number_literal) )) (compound_statement "{\n                  ssh->ssh2_rdpkt_crstate = 0x68d;\n                  pPVar10 = (Packet *)0x0;\n                  goto LAB_0004a01e;\n                }" { (expression_statement "ssh->ssh2_rdpkt_crstate = 0x68d;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0x68d" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar11 = *data;" (assignment_expression "puVar11 = *data" identifier = (pointer_expression "*data" * identifier)) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*data = puVar11 + 1;" (assignment_expression "*data = puVar11 + 1" (pointer_expression "*data" * identifier) = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11;" (assignment_expression "pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]\n                     = *puVar11" (subscript_expression "pPVar10->data\n                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]" (field_expression "pPVar10->data" identifier -> field_identifier) [ (binary_expression "(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen" (binary_expression "(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) + (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*datalen = *datalen + -1;" (assignment_expression "*datalen = *datalen + -1" (pointer_expression "*datalen" * identifier) = (binary_expression "*datalen + -1" (pointer_expression "*datalen" * identifier) + number_literal)) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).i + 1;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).i + 1" identifier = (binary_expression "(ssh->rdpkt2_state).i + 1" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "(ssh->rdpkt2_state).i = iVar8;" (assignment_expression "(ssh->rdpkt2_state).i = iVar8" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "(*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12);" (call_expression "(*ssh->sccipher->decrypt)\n                        (ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12)" (parenthesized_expression "(*ssh->sccipher->decrypt)" ( (pointer_expression "*ssh->sccipher->decrypt" * (field_expression "ssh->sccipher->decrypt" (field_expression "ssh->sccipher" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_cipher_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,iVar12)" ( (field_expression "ssh->sc_cipher_ctx" identifier -> field_identifier) , (binary_expression "((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) + (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) , identifier ))) ;) (expression_statement "(*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk);" (call_expression "(*ssh->scmac->bytes)\n                        (ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk)" (parenthesized_expression "(*ssh->scmac->bytes)" ( (pointer_expression "*ssh->scmac->bytes" * (field_expression "ssh->scmac->bytes" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_mac_ctx,\n                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,\n                         (ssh->rdpkt2_state).cipherblk)" ( (field_expression "ssh->sc_mac_ctx" identifier -> field_identifier) , (binary_expression "((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) + (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) , (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen" identifier = (binary_expression "(ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen" (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(ssh->rdpkt2_state).packetlen = iVar8;" (assignment_expression "(ssh->rdpkt2_state).packetlen = iVar8" (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8);" (assignment_expression "iVar8 = (*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8)" identifier = (call_expression "(*ssh->scmac->verresult)\n                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8)" (parenthesized_expression "(*ssh->scmac->verresult)" ( (pointer_expression "*ssh->scmac->verresult" * (field_expression "ssh->scmac->verresult" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + iVar8)" ( (field_expression "ssh->sc_mac_ctx" identifier -> field_identifier) , (binary_expression "((ssh->rdpkt2_state).pktin)->data + iVar8" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) + identifier) )))) ;) (if_statement "if (iVar8 != 0) {\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;\n                iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);\n                iVar8 = (ssh->rdpkt2_state).packetlen;\n                (ssh->rdpkt2_state).len = iVar12;\n                if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }\n              }" { (expression_statement "uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data;" (assignment_expression "uVar7 = *(uint *)((ssh->rdpkt2_state).pktin)->data" identifier = (pointer_expression "*(uint *)((ssh->rdpkt2_state).pktin)->data" * (cast_expression "(uint *)((ssh->rdpkt2_state).pktin)->data" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)))) ;) (expression_statement "iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18);" (assignment_expression "iVar12 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18)" identifier = (call_expression "toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18)" identifier (argument_list "(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18)" ( (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                               uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).packetlen;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).packetlen" identifier = (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(ssh->rdpkt2_state).len = iVar12;" (assignment_expression "(ssh->rdpkt2_state).len = iVar12" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (iVar12 == iVar8 + -4) {\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }" if (parenthesized_expression "(iVar12 == iVar8 + -4)" ( (binary_expression "iVar12 == iVar8 + -4" identifier == (binary_expression "iVar8 + -4" identifier + number_literal)) )) (compound_statement "{\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;\n                  pPVar10->maxlen = sVar13;\n                  puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);\n                  pPVar10->data = puVar11;\n                  pPVar10 = (ssh->rdpkt2_state).pktin;\n                  puVar11 = pPVar10->data;\n                  goto LAB_0004a412;\n                }" { (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;" (assignment_expression "sVar13 = iVar8 + (ssh->rdpkt2_state).maclen" identifier = (binary_expression "iVar8 + (ssh->rdpkt2_state).maclen" identifier + (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pPVar10->maxlen = sVar13;" (assignment_expression "pPVar10->maxlen = sVar13" (field_expression "pPVar10->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);" (assignment_expression "puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1)" identifier = (cast_expression "(uchar *)saferealloc(pPVar10->data,sVar13,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(pPVar10->data,sVar13,1)" identifier (argument_list "(pPVar10->data,sVar13,1)" ( (field_expression "pPVar10->data" identifier -> field_identifier) , identifier , number_literal ))))) ;) (expression_statement "pPVar10->data = puVar11;" (assignment_expression "pPVar10->data = puVar11" (field_expression "pPVar10->data" identifier -> field_identifier) = identifier) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0004a412;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "((uint)(ssh->rdpkt2_state).packetlen < 0x9000)" ( (binary_expression "(uint)(ssh->rdpkt2_state).packetlen < 0x9000" (field_expression "(uint)(ssh->rdpkt2_state).packetlen" (call_expression "(uint)(ssh->rdpkt2_state)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) ))) . field_identifier) < number_literal) )) ;) (expression_statement "pcVar9 = "No valid incoming packet found";" (assignment_expression "pcVar9 = "No valid incoming packet found"" identifier = (string_literal ""No valid incoming packet found"" " string_content ")) ;) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (labeled_statement "LAB_0004a798:\n          (ssh->rdpkt2_state).maclen = 0;" statement_identifier : (expression_statement "(ssh->rdpkt2_state).maclen = 0;" (assignment_expression "(ssh->rdpkt2_state).maclen = 0" (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;)) }))) (expression_statement "puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1);" (assignment_expression "puVar11 = (uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1)" identifier = (cast_expression "(uchar *)safemalloc((ssh->rdpkt2_state).cipherblk,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "safemalloc((ssh->rdpkt2_state).cipherblk,1)" identifier (argument_list "((ssh->rdpkt2_state).cipherblk,1)" ( (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) , number_literal ))))) ;) (expression_statement "pPVar10->data = puVar11;" (assignment_expression "pPVar10->data = puVar11" (field_expression "pPVar10->data" identifier -> field_identifier) = identifier) ;) (expression_statement "(ssh->rdpkt2_state).len = 0;" (assignment_expression "(ssh->rdpkt2_state).len = 0" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(ssh->rdpkt2_state).i = 0;" (assignment_expression "(ssh->rdpkt2_state).i = 0" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12) {\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }" while (parenthesized_expression "(iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12)" ( (comma_expression "iVar12 = (ssh->rdpkt2_state).cipherblk, iVar8 < iVar12" (assignment_expression "iVar12 = (ssh->rdpkt2_state).cipherblk" identifier = (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "iVar8 < iVar12" identifier < identifier)) )) (compound_statement "{\nLAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }" { (labeled_statement "LAB_0004a120:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }" statement_identifier : (if_statement "if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }" if (parenthesized_expression "(*datalen == 0)" ( (binary_expression "*datalen == 0" (pointer_expression "*datalen" * identifier) == number_literal) )) (compound_statement "{\n            ssh->ssh2_rdpkt_crstate = 0x6fc;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }" { (expression_statement "ssh->ssh2_rdpkt_crstate = 0x6fc;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0x6fc" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar11 = *data;" (assignment_expression "puVar11 = *data" identifier = (pointer_expression "*data" * identifier)) ;) (expression_statement "*data = puVar11 + 1;" (assignment_expression "*data = puVar11 + 1" (pointer_expression "*data" * identifier) = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;" (assignment_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11" (subscript_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i]" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*datalen = *datalen + -1;" (assignment_expression "*datalen = *datalen + -1" (pointer_expression "*datalen" * identifier) = (binary_expression "*datalen + -1" (pointer_expression "*datalen" * identifier) + number_literal)) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).i + 1;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).i + 1" identifier = (binary_expression "(ssh->rdpkt2_state).i + 1" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "(ssh->rdpkt2_state).i = iVar8;" (assignment_expression "(ssh->rdpkt2_state).i = iVar8" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;" (assignment_expression "puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data" identifier = (cast_expression "(uint *)((ssh->rdpkt2_state).pktin)->data" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;) (if_statement "if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }" if (parenthesized_expression "(ssh->sccipher != (ssh2_cipher *)0x0)" ( (binary_expression "ssh->sccipher != (ssh2_cipher *)0x0" (field_expression "ssh->sccipher" identifier -> field_identifier) != (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);\n          puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;\n        }" { (expression_statement "(*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12);" (call_expression "(*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12)" (parenthesized_expression "(*ssh->sccipher->decrypt)" ( (pointer_expression "*ssh->sccipher->decrypt" * (field_expression "ssh->sccipher->decrypt" (field_expression "ssh->sccipher" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_cipher_ctx,(uchar *)puVar14,iVar12)" ( (field_expression "ssh->sc_cipher_ctx" identifier -> field_identifier) , (cast_expression "(uchar *)puVar14" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data;" (assignment_expression "puVar14 = (uint *)((ssh->rdpkt2_state).pktin)->data" identifier = (cast_expression "(uint *)((ssh->rdpkt2_state).pktin)->data" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;) })) (expression_statement "uVar7 = *puVar14;" (assignment_expression "uVar7 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18);" (assignment_expression "uVar7 = toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18)" identifier = (call_expression "toint(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18)" identifier (argument_list "(uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18)" ( (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 |\n                      uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "(ssh->rdpkt2_state).len = uVar7;" (assignment_expression "(ssh->rdpkt2_state).len = uVar7" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)) {\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" if (parenthesized_expression "((0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0))" ( (binary_expression "(0x9000 < uVar7) || (iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)" (parenthesized_expression "(0x9000 < uVar7)" ( (binary_expression "0x9000 < uVar7" number_literal < identifier) )) || (parenthesized_expression "(iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0)" ( (comma_expression "iVar8 = uVar7 + 4, iVar8 % (ssh->rdpkt2_state).cipherblk != 0" (assignment_expression "iVar8 = uVar7 + 4" identifier = (binary_expression "uVar7 + 4" identifier + number_literal)) , (binary_expression "iVar8 % (ssh->rdpkt2_state).cipherblk != 0" (binary_expression "iVar8 % (ssh->rdpkt2_state).cipherblk" identifier % (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) != number_literal)) ))) )) (compound_statement "{\n          pcVar9 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" { (expression_statement "pcVar9 = "Incoming packet was garbled on decryption";" (assignment_expression "pcVar9 = "Incoming packet was garbled on decryption"" identifier = (string_literal ""Incoming packet was garbled on decryption"" " string_content ")) ;) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(ssh->rdpkt2_state).packetlen = iVar8;" (assignment_expression "(ssh->rdpkt2_state).packetlen = iVar8" (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "sVar13 = iVar8 + (ssh->rdpkt2_state).maclen;" (assignment_expression "sVar13 = iVar8 + (ssh->rdpkt2_state).maclen" identifier = (binary_expression "iVar8 + (ssh->rdpkt2_state).maclen" identifier + (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pPVar10->maxlen = sVar13;" (assignment_expression "pPVar10->maxlen = sVar13" (field_expression "pPVar10->maxlen" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1);" (assignment_expression "puVar11 = (uchar *)saferealloc(pPVar10->data,sVar13,1)" identifier = (cast_expression "(uchar *)saferealloc(pPVar10->data,sVar13,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "saferealloc(pPVar10->data,sVar13,1)" identifier (argument_list "(pPVar10->data,sVar13,1)" ( (field_expression "pPVar10->data" identifier -> field_identifier) , identifier , number_literal ))))) ;) (expression_statement "pPVar10->data = puVar11;" (assignment_expression "pPVar10->data = puVar11" (field_expression "pPVar10->data" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).cipherblk;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).cipherblk" identifier = (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(ssh->rdpkt2_state).i = iVar8;" (assignment_expression "(ssh->rdpkt2_state).i = iVar8" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (while_statement "while (iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)\n        {\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }" while (parenthesized_expression "(iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12)" ( (comma_expression "iVar12 = (ssh->rdpkt2_state).packetlen, iVar8 < (ssh->rdpkt2_state).maclen + iVar12" (assignment_expression "iVar12 = (ssh->rdpkt2_state).packetlen" identifier = (field_expression "(ssh->rdpkt2_state).packetlen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "iVar8 < (ssh->rdpkt2_state).maclen + iVar12" identifier < (binary_expression "(ssh->rdpkt2_state).maclen + iVar12" (field_expression "(ssh->rdpkt2_state).maclen" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + identifier))) )) (compound_statement "{\nLAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar11 = *data;\n          *data = puVar11 + 1;\n          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;\n          *datalen = *datalen + -1;\n          iVar8 = (ssh->rdpkt2_state).i + 1;\n          (ssh->rdpkt2_state).i = iVar8;\n        }" { (labeled_statement "LAB_0004a360:\n          if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }" statement_identifier : (if_statement "if (*datalen == 0) {\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }" if (parenthesized_expression "(*datalen == 0)" ( (binary_expression "*datalen == 0" (pointer_expression "*datalen" * identifier) == number_literal) )) (compound_statement "{\n            ssh->ssh2_rdpkt_crstate = 0x728;\n            pPVar10 = (Packet *)0x0;\n            goto LAB_0004a01e;\n          }" { (expression_statement "ssh->ssh2_rdpkt_crstate = 0x728;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0x728" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPVar10 = (Packet *)0x0;" (assignment_expression "pPVar10 = (Packet *)0x0" identifier = (cast_expression "(Packet *)0x0" ( (type_descriptor "Packet *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar11 = *data;" (assignment_expression "puVar11 = *data" identifier = (pointer_expression "*data" * identifier)) ;) (expression_statement "*data = puVar11 + 1;" (assignment_expression "*data = puVar11 + 1" (pointer_expression "*data" * identifier) = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11;" (assignment_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *puVar11" (subscript_expression "((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i]" (field_expression "((ssh->rdpkt2_state).pktin)->data" (parenthesized_expression "((ssh->rdpkt2_state).pktin)" ( (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) ]) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*datalen = *datalen + -1;" (assignment_expression "*datalen = *datalen + -1" (pointer_expression "*datalen" * identifier) = (binary_expression "*datalen + -1" (pointer_expression "*datalen" * identifier) + number_literal)) ;) (expression_statement "iVar8 = (ssh->rdpkt2_state).i + 1;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).i + 1" identifier = (binary_expression "(ssh->rdpkt2_state).i + 1" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "(ssh->rdpkt2_state).i = iVar8;" (assignment_expression "(ssh->rdpkt2_state).i = iVar8" (field_expression "(ssh->rdpkt2_state).i" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) = identifier) ;) })) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) (if_statement "if (ssh->sccipher != (ssh2_cipher *)0x0) {\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }" if (parenthesized_expression "(ssh->sccipher != (ssh2_cipher *)0x0)" ( (binary_expression "ssh->sccipher != (ssh2_cipher *)0x0" (field_expression "ssh->sccipher" identifier -> field_identifier) != (cast_expression "(ssh2_cipher *)0x0" ( (type_descriptor "ssh2_cipher *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar8 = (ssh->rdpkt2_state).cipherblk;\n          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }" { (expression_statement "iVar8 = (ssh->rdpkt2_state).cipherblk;" (assignment_expression "iVar8 = (ssh->rdpkt2_state).cipherblk" identifier = (field_expression "(ssh->rdpkt2_state).cipherblk" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8);" (call_expression "(*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8)" (parenthesized_expression "(*ssh->sccipher->decrypt)" ( (pointer_expression "*ssh->sccipher->decrypt" * (field_expression "ssh->sccipher->decrypt" (field_expression "ssh->sccipher" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_cipher_ctx,puVar11 + iVar8,iVar12 - iVar8)" ( (field_expression "ssh->sc_cipher_ctx" identifier -> field_identifier) , (binary_expression "puVar11 + iVar8" identifier + identifier) , (binary_expression "iVar12 - iVar8" identifier - identifier) ))) ;) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) })) (if_statement "if (ssh->scmac != (ssh_mac *)0x0) {\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }" if (parenthesized_expression "(ssh->scmac != (ssh_mac *)0x0)" ( (binary_expression "ssh->scmac != (ssh_mac *)0x0" (field_expression "ssh->scmac" identifier -> field_identifier) != (cast_expression "(ssh_mac *)0x0" ( (type_descriptor "ssh_mac *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);\n          if (iVar8 == 0) goto LAB_0004a92e;\n          pPVar10 = (ssh->rdpkt2_state).pktin;\n          puVar11 = pPVar10->data;\n        }" { (expression_statement "iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence);" (assignment_expression "iVar8 = (*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence)" identifier = (call_expression "(*ssh->scmac->verify)\n                            (ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence)" (parenthesized_expression "(*ssh->scmac->verify)" ( (pointer_expression "*ssh->scmac->verify" * (field_expression "ssh->scmac->verify" (field_expression "ssh->scmac" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ssh->sc_mac_ctx,puVar11,(ssh->rdpkt2_state).len + 4,\n                             (ssh->rdpkt2_state).incoming_sequence)" ( (field_expression "ssh->sc_mac_ctx" identifier -> field_identifier) , identifier , (binary_expression "(ssh->rdpkt2_state).len + 4" (field_expression "(ssh->rdpkt2_state).len" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) + number_literal) , (field_expression "(ssh->rdpkt2_state).incoming_sequence" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier) )))) ;) (if_statement "if (iVar8 == 0) goto LAB_0004a92e;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004a92e;" goto statement_identifier ;)) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar11 = pPVar10->data;" (assignment_expression "puVar11 = pPVar10->data" identifier = (field_expression "pPVar10->data" identifier -> field_identifier)) ;) })) (goto_statement "goto LAB_0004a412;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" else (compound_statement "{\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" { (if_statement "if (iVar8 == 0x6fc) goto LAB_0004a120;" if (parenthesized_expression "(iVar8 == 0x6fc)" ( (binary_expression "iVar8 == 0x6fc" identifier == number_literal) )) (goto_statement "goto LAB_0004a120;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x728) goto LAB_0004a360;" if (parenthesized_expression "(iVar8 == 0x728)" ( (binary_expression "iVar8 == 0x728" identifier == number_literal) )) (goto_statement "goto LAB_0004a360;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x6de) goto LAB_0004a060;" if (parenthesized_expression "(iVar8 == 0x6de)" ( (binary_expression "iVar8 == 0x6de" identifier == number_literal) )) (goto_statement "goto LAB_0004a060;" goto statement_identifier ;)) }))) (expression_statement "pPVar10 = (ssh->rdpkt2_state).pktin;" (assignment_expression "pPVar10 = (ssh->rdpkt2_state).pktin" identifier = (field_expression "(ssh->rdpkt2_state).pktin" (parenthesized_expression "(ssh->rdpkt2_state)" ( (field_expression "ssh->rdpkt2_state" identifier -> field_identifier) )) . field_identifier)) ;) (labeled_statement "LAB_0004a014:\n    ssh->ssh2_rdpkt_crstate = 0;" statement_identifier : (expression_statement "ssh->ssh2_rdpkt_crstate = 0;" (assignment_expression "ssh->ssh2_rdpkt_crstate = 0" (field_expression "ssh->ssh2_rdpkt_crstate" identifier -> field_identifier) = number_literal) ;)) }))) (labeled_statement "LAB_0004a01e:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pPVar10;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return pPVar10;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return pPVar10;\n  }" { (return_statement "return pPVar10;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int * FUN_00049fb0(int param_1,int *param_2,int *param_3)\n\n{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    \n  FUN_000a39d0();\n}\n\n" (function_definition "int * FUN_00049fb0(int param_1,int *param_2,int *param_3)\n\n{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    \n  FUN_000a39d0();\n}" primitive_type (pointer_declarator "* FUN_00049fb0(int param_1,int *param_2,int *param_3)" * (function_declarator "FUN_00049fb0(int param_1,int *param_2,int *param_3)" identifier (parameter_list "(int param_1,int *param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    \n  FUN_000a39d0();\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "void *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "size_t local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x49fb9;" (assignment_expression "uStack_14 = 0x49fb9" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1b4)" identifier = (pointer_expression "*(int *)(param_1 + 0x1b4)" * (cast_expression "(int *)(param_1 + 0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" if (parenthesized_expression "(iVar8 == 0x6b2)" ( (binary_expression "iVar8 == 0x6b2" identifier == number_literal) )) (compound_statement "{\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" { (labeled_statement "LAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);" statement_identifier : (do_statement "do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);" do (compound_statement "{\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    }" { (if_statement "if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6b2;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6b2" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) })) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "(iVar8 < 4)" ( (binary_expression "iVar8 < 4" identifier < number_literal) )) ;)) (expression_statement "iVar8 = *(int *)(param_1 + 100);" (assignment_expression "iVar8 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "**(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))))) ;) (if_statement "if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" if (parenthesized_expression "((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0))" ( (binary_expression "(iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "((*(byte *)(iVar8 + 0x30) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x30) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x30) & 2)" ( (binary_expression "*(byte *)(iVar8 + 0x30) & 2" (pointer_expression "*(byte *)(iVar8 + 0x30)" * (cast_expression "(byte *)(iVar8 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" { (expression_statement "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" identifier = (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" identifier (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" * (cast_expression "(uint *)(param_1 + 0x200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" else (compound_statement "{\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" { (expression_statement "local_24 = uVar3;" (assignment_expression "local_24 = uVar3" identifier = identifier) ;) (expression_statement "(**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));" (call_expression "(**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(iVar8 + 0x1c))" ( (pointer_expression "**(code **)(iVar8 + 0x1c)" * (pointer_expression "*(code **)(iVar8 + 0x1c)" * (cast_expression "(code **)(iVar8 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (pointer_expression "&local_24" & identifier) , number_literal , (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" * (cast_expression "(undefined4 *)(param_1 + 0x21c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" identifier = (call_expression "FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" identifier (argument_list "(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" ( (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18" (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8" (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8" (binary_expression "local_24 >> 0x18" identifier >> number_literal) | (binary_expression "(local_24 & 0xff0000) >> 8" (parenthesized_expression "(local_24 & 0xff0000)" ( (binary_expression "local_24 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_24 & 0xff00) << 8" (parenthesized_expression "(local_24 & 0xff00)" ( (binary_expression "local_24 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_24 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" * (cast_expression "(uint *)(param_1 + 0x200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }" if (parenthesized_expression "((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0))" ( (binary_expression "(uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)" (parenthesized_expression "(uVar3 < 0x9001)" ( (binary_expression "uVar3 < 0x9001" identifier < number_literal) )) && (parenthesized_expression "((int)uVar3 % *(int *)(param_1 + 0x218) == 0)" ( (binary_expression "(int)uVar3 % *(int *)(param_1 + 0x218) == 0" (binary_expression "(int)uVar3 % *(int *)(param_1 + 0x218)" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) % (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }" { (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x20c) = uVar3 + 4;" (assignment_expression "*(uint *)(param_1 + 0x20c) = uVar3 + 4" (pointer_expression "*(uint *)(param_1 + 0x20c)" * (cast_expression "(uint *)(param_1 + 0x20c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = (binary_expression "uVar3 + 4" identifier + number_literal)) ;) (expression_statement "iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);" (assignment_expression "iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210)" identifier = (binary_expression "uVar3 + 4 + *(int *)(param_1 + 0x210)" (binary_expression "uVar3 + 4" identifier + number_literal) + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(iVar8 + 0x1c) = iVar10;" (assignment_expression "*(int *)(iVar8 + 0x1c) = iVar10" (pointer_expression "*(int *)(iVar8 + 0x1c)" * (cast_expression "(int *)(iVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" identifier = (call_expression "FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar8 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" identifier < (binary_expression "*(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))))) )) (compound_statement "{\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }" { (labeled_statement "LAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" statement_identifier : (if_statement "if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6de;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6de" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" ( (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" { (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x10" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , identifier , (binary_expression "*(int *)(param_1 + 0x200) + 4" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" * (cast_expression "(undefined4 *)(param_1 + 0x21c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" { (labeled_statement "LAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";" statement_identifier : (expression_statement "pcVar4 = "Incorrect MAC received on packet";" (assignment_expression "pcVar4 = "Incorrect MAC received on packet"" identifier = (string_literal ""Incorrect MAC received on packet"" " string_content ")) ;)) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" if (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" ( (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" { (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (binary_expression "iVar8 + 4" identifier + number_literal) , (binary_expression "*(int *)(param_1 + 0x20c) + -4" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);" statement_identifier : (expression_statement "uVar3 = (uint)*(byte *)(iVar8 + 4);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar8 + 4)" identifier = (binary_expression "(uint)*(byte *)(iVar8 + 4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar8 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) ))))) ;)) (expression_statement "*(uint *)(param_1 + 0x204) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x204) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x204)" * (cast_expression "(uint *)(param_1 + 0x204)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x204)" ( (binary_expression "param_1 + 0x204" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }" if (parenthesized_expression "((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10))" ( (binary_expression "(3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)" (parenthesized_expression "(3 < uVar3)" ( (binary_expression "3 < uVar3" number_literal < identifier) )) && (parenthesized_expression "(iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)" ( (comma_expression "iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10" (assignment_expression "iVar10 = *(int *)(param_1 + 0x200) - uVar3" identifier = (binary_expression "*(int *)(param_1 + 0x200) - uVar3" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) - identifier)) , (binary_expression "0 < iVar10" number_literal < identifier)) ))) )) (compound_statement "{\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }" { (expression_statement "iVar11 = *(int *)(param_1 + 0x21c);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x21c)" identifier = (pointer_expression "*(int *)(param_1 + 0x21c)" * (cast_expression "(int *)(param_1 + 0x21c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x208) = iVar10 + -1;" (assignment_expression "*(int *)(param_1 + 0x208) = iVar10 + -1" (pointer_expression "*(int *)(param_1 + 0x208)" * (cast_expression "(int *)(param_1 + 0x208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x208)" ( (binary_expression "param_1 + 0x208" identifier + number_literal) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(param_1 + 0x20c);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x20c)" identifier = (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) ))))) ;) (expression_statement "piVar7[8] = iVar10;" (assignment_expression "piVar7[8] = iVar10" (subscript_expression "piVar7[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x21c) = iVar11 + 1;" (assignment_expression "*(int *)(param_1 + 0x21c) = iVar11 + 1" (pointer_expression "*(int *)(param_1 + 0x21c)" * (cast_expression "(int *)(param_1 + 0x21c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar7[3] = iVar11;" (assignment_expression "piVar7[3] = iVar11" (subscript_expression "piVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar10 = iVar10 - uVar3;" (assignment_expression "iVar10 = iVar10 - uVar3" identifier = (binary_expression "iVar10 - uVar3" identifier - identifier)) ;) (expression_statement "*piVar7 = iVar10;" (assignment_expression "*piVar7 = iVar10" (pointer_expression "*piVar7" * identifier) = identifier) ;) (if_statement "if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" { (expression_statement "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");" (call_expression "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" identifier (argument_list "("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" ( (string_literal ""st->pktin->length >= 0"" " string_content ") , (string_literal ""ssh.c"" " string_content ") , number_literal , (string_literal ""ssh2_rdpkt"" " string_content ") ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x8c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x8c) != 0" (pointer_expression "*(int *)(param_1 + 0x8c)" * (cast_expression "(int *)(param_1 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }" { (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" * (cast_expression "(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x8c) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x8c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x8c)" * (cast_expression "(int *)(param_1 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x94)" * (cast_expression "(undefined4 *)(param_1 + 0x94)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) , (binary_expression "iVar8 + 5" identifier + number_literal) , (binary_expression "iVar10 + -5" identifier + number_literal) , (pointer_expression "&local_2c" & identifier) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" { (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *piVar7;" (assignment_expression "iVar10 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) }) (else_clause "else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" else (compound_statement "{\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" { (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = local_28 + 5;" (assignment_expression "iVar8 = local_28 + 5" identifier = (binary_expression "local_28 + 5" identifier + number_literal)) ;) (expression_statement "iVar10 = piVar7[4];" (assignment_expression "iVar10 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (if_statement "if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }" if (parenthesized_expression "(piVar7[7] <= (int)(local_28 + 4))" ( (binary_expression "piVar7[7] <= (int)(local_28 + 4)" (subscript_expression "piVar7[7]" identifier [ number_literal ]) <= (cast_expression "(int)(local_28 + 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_28 + 4)" ( (binary_expression "local_28 + 4" identifier + number_literal) )))) )) (compound_statement "{\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }" { (expression_statement "piVar7[7] = iVar8;" (assignment_expression "piVar7[7] = iVar8" (subscript_expression "piVar7[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = FUN_0002eb80(iVar10,iVar8,1);" (assignment_expression "iVar8 = FUN_0002eb80(iVar10,iVar8,1)" identifier = (call_expression "FUN_0002eb80(iVar10,iVar8,1)" identifier (argument_list "(iVar10,iVar8,1)" ( identifier , identifier , number_literal )))) ;) (expression_statement "piVar7[4] = iVar8;" (assignment_expression "piVar7[4] = iVar8" (subscript_expression "piVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = local_28 + 5;" (assignment_expression "iVar8 = local_28 + 5" identifier = (binary_expression "local_28 + 5" identifier + number_literal)) ;) (expression_statement "iVar10 = piVar7[4];" (assignment_expression "iVar10 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (expression_statement "*piVar7 = iVar8;" (assignment_expression "*piVar7 = iVar8" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "memcpy((void *)(iVar10 + 5),local_2c,local_28);" (call_expression "memcpy((void *)(iVar10 + 5),local_2c,local_28)" identifier (argument_list "((void *)(iVar10 + 5),local_2c,local_28)" ( (cast_expression "(void *)(iVar10 + 5)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 5)" ( (binary_expression "iVar10 + 5" identifier + number_literal) ))) , identifier , identifier ))) ;) (expression_statement "FUN_0002f010(local_2c);" (call_expression "FUN_0002f010(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *piVar7;" (assignment_expression "iVar10 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) }))) })) (if_statement "if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }" if (parenthesized_expression "(iVar10 < 6)" ( (binary_expression "iVar10 < 6" identifier < number_literal) )) (compound_statement "{\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }" { (expression_statement "FUN_00049f80(param_1,piVar7);" (call_expression "FUN_00049f80(param_1,piVar7)" identifier (argument_list "(param_1,piVar7)" ( identifier , identifier ))) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) })) (expression_statement "bVar1 = *(byte *)(piVar7[4] + 5);" (assignment_expression "bVar1 = *(byte *)(piVar7[4] + 5)" identifier = (pointer_expression "*(byte *)(piVar7[4] + 5)" * (cast_expression "(byte *)(piVar7[4] + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7[4] + 5)" ( (binary_expression "piVar7[4] + 5" (subscript_expression "piVar7[4]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "*piVar7 = iVar10 + -6;" (assignment_expression "*piVar7 = iVar10 + -6" (pointer_expression "*piVar7" * identifier) = (binary_expression "iVar10 + -6" identifier + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" identifier = (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) ))))) ;) (expression_statement "piVar7[5] = piVar7[4] + 6;" (assignment_expression "piVar7[5] = piVar7[4] + 6" (subscript_expression "piVar7[5]" identifier [ number_literal ]) = (binary_expression "piVar7[4] + 6" (subscript_expression "piVar7[4]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar7[2] = (uint)bVar1;" (assignment_expression "piVar7[2] = (uint)bVar1" (subscript_expression "piVar7[2]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }" { (expression_statement "FUN_000399f0();" (call_expression "FUN_000399f0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) })) (expression_statement "piVar7[6] = 0;" (assignment_expression "piVar7[6] = 0" (subscript_expression "piVar7[6]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0004a014;" goto statement_identifier ;) })) (expression_statement "pcVar4 = "Invalid padding length on received packet";" (assignment_expression "pcVar4 = "Invalid padding length on received packet"" identifier = (string_literal ""Invalid padding length on received packet"" " string_content ")) ;) }) (else_clause "else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }" else (compound_statement "{\n      pcVar4 = "Incoming packet length field was garbled";\n    }" { (expression_statement "pcVar4 = "Incoming packet length field was garbled";" (assignment_expression "pcVar4 = "Incoming packet length field was garbled"" identifier = (string_literal ""Incoming packet length field was garbled"" " string_content ")) ;) }))) (labeled_statement "LAB_0004a660:\n    FUN_0002edf0(pcVar4);" statement_identifier : (expression_statement "FUN_0002edf0(pcVar4);" (call_expression "FUN_0002edf0(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;)) (expression_statement "FUN_0003a2d0();" (call_expression "FUN_0003a2d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));" (call_expression "FUN_0002f010(*(undefined4 *)(iVar8 + 0x10))" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x10))" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_0002f010(iVar8);" (call_expression "FUN_0002f010(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" else (compound_statement "{\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" { (if_statement "if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" if (parenthesized_expression "(iVar8 < 0x6b3)" ( (binary_expression "iVar8 < 0x6b3" identifier < number_literal) )) (compound_statement "{\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }" { (if_statement "if (iVar8 == 0x67c) goto LAB_0004a4f0;" if (parenthesized_expression "(iVar8 == 0x67c)" ( (binary_expression "iVar8 == 0x67c" identifier == number_literal) )) (goto_statement "goto LAB_0004a4f0;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x68d) goto LAB_0004a580;" if (parenthesized_expression "(iVar8 == 0x68d)" ( (binary_expression "iVar8 == 0x68d" identifier == number_literal) )) (goto_statement "goto LAB_0004a580;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }" { (expression_statement "puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);" (assignment_expression "puVar5 = (undefined4 *)FUN_0002e780(1,0x2c)" identifier = (cast_expression "(undefined4 *)FUN_0002e780(1,0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0002e780(1,0x2c)" identifier (argument_list "(1,0x2c)" ( number_literal , number_literal ))))) ;) (expression_statement "puVar5[4] = 0;" (assignment_expression "puVar5[4] = 0" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar5[5] = 0;" (assignment_expression "puVar5[5] = 0" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar5[7] = 0;" (assignment_expression "puVar5[7] = 0" (subscript_expression "puVar5[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 **)(param_1 + 0x220) = puVar5;" (assignment_expression "*(undefined4 **)(param_1 + 0x220) = puVar5" (pointer_expression "*(undefined4 **)(param_1 + 0x220)" * (cast_expression "(undefined4 **)(param_1 + 0x220)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar5[2] = 0;" (assignment_expression "puVar5[2] = 0" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "iVar8 = *(int *)(param_1 + 100);" (assignment_expression "iVar8 = *(int *)(param_1 + 100)" identifier = (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) ))))) ;) (if_statement "if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" if (parenthesized_expression "((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8))" ( (binary_expression "(iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)" ( (comma_expression "iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8" (assignment_expression "iVar10 = *(int *)(iVar8 + 0x24)" identifier = (pointer_expression "*(int *)(iVar8 + 0x24)" * (cast_expression "(int *)(iVar8 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) ))))) , (comma_expression "*(int *)(param_1 + 0x218) = iVar10, iVar10 < 8" (assignment_expression "*(int *)(param_1 + 0x218) = iVar10" (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) = identifier) , (binary_expression "iVar10 < 8" identifier < number_literal))) ))) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }" { (expression_statement "*(undefined4 *)(param_1 + 0x218) = 8;" (assignment_expression "*(undefined4 *)(param_1 + 0x218) = 8" (pointer_expression "*(undefined4 *)(param_1 + 0x218)" * (cast_expression "(undefined4 *)(param_1 + 0x218)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;" if (parenthesized_expression "(*(int *)(param_1 + 0x74) == 0)" ( (binary_expression "*(int *)(param_1 + 0x74) == 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0004a798;" goto statement_identifier ;)) (expression_statement "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);" (assignment_expression "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x74) + 0x2c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x74) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x2c" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x210) = local_34;" (assignment_expression "*(int *)(param_1 + 0x210) = local_34" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar8 != 0) goto LAB_0004a220;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004a220;" goto statement_identifier ;)) (labeled_statement "LAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x7c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x7c) != 0" (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" { (labeled_statement "LAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);" statement_identifier : (expression_statement "uVar6 = FUN_0002e780(4,1);" (assignment_expression "uVar6 = FUN_0002e780(4,1)" identifier = (call_expression "FUN_0002e780(4,1)" identifier (argument_list "(4,1)" ( number_literal , number_literal )))) ;)) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x200) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x200) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x200)" * (cast_expression "(undefined4 *)(param_1 + 0x200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0004a267;" goto statement_identifier ;) }))) }) (else_clause "else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" else (compound_statement "{\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" { (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" if (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" ( (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" { (expression_statement "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);" (assignment_expression "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x74) + 0x2c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x74) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x2c" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x210) = local_34;" (assignment_expression "*(int *)(param_1 + 0x210) = local_34" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;" statement_identifier : (if_statement "if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x30) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x30) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x30) & 1)" ( (binary_expression "*(byte *)(iVar8 + 0x30) & 1" (pointer_expression "*(byte *)(iVar8 + 0x30)" * (cast_expression "(byte *)(iVar8 + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x30)" ( (binary_expression "iVar8 + 0x30" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0004a72c;" goto statement_identifier ;))) (if_statement "if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;" if (parenthesized_expression "(*(int *)(param_1 + 0x7c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x7c) != 0" (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0004a239;" goto statement_identifier ;)) (expression_statement "uVar6 = FUN_0002e780(local_34 + 0x9000,1);" (assignment_expression "uVar6 = FUN_0002e780(local_34 + 0x9000,1)" identifier = (call_expression "FUN_0002e780(local_34 + 0x9000,1)" identifier (argument_list "(local_34 + 0x9000,1)" ( (binary_expression "local_34 + 0x9000" identifier + number_literal) , number_literal )))) ;) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x210)" identifier < (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }" { (labeled_statement "LAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" statement_identifier : (if_statement "if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x67c;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x67c" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;" (assignment_expression "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2" (pointer_expression "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x20c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x20c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x20c)" * (cast_expression "(undefined4 *)(param_1 + 0x20c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x14)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x14" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) ))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x21c);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x21c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x21c)" * (cast_expression "(uint *)(param_1 + 0x21c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) ))))) ;) (expression_statement "local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;" (assignment_expression "local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x18" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),&local_24,4)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , (pointer_expression "&local_24" & identifier) , number_literal ))) ;) (do_statement "do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);" do (compound_statement "{\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            }" { (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x218))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x218)" identifier < (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }" { (labeled_statement "LAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" statement_identifier : (if_statement "if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x68d;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x68d" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;" (assignment_expression "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2" (pointer_expression "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)" (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210)" (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) ))))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) , (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) ))) ;) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x18)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x18" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) , (pointer_expression "*(undefined4 *)(param_1 + 0x218)" * (cast_expression "(undefined4 *)(param_1 + 0x218)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) ))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c)" identifier = (binary_expression "*(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(param_1 + 0x20c) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x20c) = iVar8" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x20))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x20)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x20)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x20" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , (binary_expression "iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" identifier + (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) )))) ;) (if_statement "if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }" { (expression_statement "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "**(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))))) ;) (expression_statement "iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);" (assignment_expression "iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" identifier = (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" identifier (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(int *)(param_1 + 0x200) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x200) = iVar8" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }" if (parenthesized_expression "(iVar8 == *(int *)(param_1 + 0x20c) + -4)" ( (binary_expression "iVar8 == *(int *)(param_1 + 0x20c) + -4" identifier == (binary_expression "*(int *)(param_1 + 0x20c) + -4" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + number_literal)) )) (compound_statement "{\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }" { (expression_statement "iVar10 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210)" identifier = (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(iVar10 + 0x1c) = iVar11;" (assignment_expression "*(int *)(iVar10 + 0x1c) = iVar11" (pointer_expression "*(int *)(iVar10 + 0x1c)" * (cast_expression "(int *)(iVar10 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" identifier = (call_expression "FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" identifier (argument_list "(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" ( (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) , identifier , number_literal , identifier )))) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar10 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0004a412;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "(*(uint *)(param_1 + 0x20c) < 0x9000)" ( (binary_expression "*(uint *)(param_1 + 0x20c) < 0x9000" (pointer_expression "*(uint *)(param_1 + 0x20c)" * (cast_expression "(uint *)(param_1 + 0x20c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) < number_literal) )) ;) (expression_statement "pcVar4 = "No valid incoming packet found";" (assignment_expression "pcVar4 = "No valid incoming packet found"" identifier = (string_literal ""No valid incoming packet found"" " string_content ")) ;) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (labeled_statement "LAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x210) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x210) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x210)" * (cast_expression "(undefined4 *)(param_1 + 0x210)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) = number_literal) ;)) }))) (expression_statement "uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);" (assignment_expression "uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1)" identifier = (call_expression "FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x218),1)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x218)" * (cast_expression "(undefined4 *)(param_1 + 0x218)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x200) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x200) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x200)" * (cast_expression "(undefined4 *)(param_1 + 0x200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" * (cast_expression "(undefined4 *)(param_1 + 0x214)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x218))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x218)" identifier < (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" { (labeled_statement "LAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" statement_identifier : (if_statement "if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6fc;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6fc" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" ( (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }" { (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , identifier , (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) ))) ;) (expression_statement "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10)" identifier = (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) ))))) ;) })) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" identifier = (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" identifier (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" ( (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal)) )))) ;) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" * (cast_expression "(uint *)(param_1 + 0x200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" if (parenthesized_expression "((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0))" ( (binary_expression "(0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)" (parenthesized_expression "(0x9000 < uVar3)" ( (binary_expression "0x9000 < uVar3" number_literal < identifier) )) || (parenthesized_expression "(iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)" ( (comma_expression "iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0" (assignment_expression "iVar8 = uVar3 + 4" identifier = (binary_expression "uVar3 + 4" identifier + number_literal)) , (binary_expression "iVar8 % *(int *)(param_1 + 0x218) != 0" (binary_expression "iVar8 % *(int *)(param_1 + 0x218)" identifier % (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) != number_literal)) ))) )) (compound_statement "{\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" { (expression_statement "pcVar4 = "Incoming packet was garbled on decryption";" (assignment_expression "pcVar4 = "Incoming packet was garbled on decryption"" identifier = (string_literal ""Incoming packet was garbled on decryption"" " string_content ")) ;) (goto_statement "goto LAB_0004a660;" goto statement_identifier ;) })) (expression_statement "iVar10 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x220)" identifier = (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x20c) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x20c) = iVar8" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = iVar8 + *(int *)(param_1 + 0x210);" (assignment_expression "iVar8 = iVar8 + *(int *)(param_1 + 0x210)" identifier = (binary_expression "iVar8 + *(int *)(param_1 + 0x210)" identifier + (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(iVar10 + 0x1c) = iVar8;" (assignment_expression "*(int *)(iVar10 + 0x1c) = iVar8" (pointer_expression "*(int *)(iVar10 + 0x1c)" * (cast_expression "(int *)(iVar10 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x1c)" ( (binary_expression "iVar10 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" identifier = (call_expression "FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" identifier (argument_list "(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" ( (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar10 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar10 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" * (cast_expression "(undefined4 *)(iVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x218);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x218)" identifier = (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" while (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c))" ( (binary_expression "iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" identifier < (binary_expression "*(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x210)" * (cast_expression "(int *)(param_1 + 0x210)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x210)" ( (binary_expression "param_1 + 0x210" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))))) )) (compound_statement "{\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" { (labeled_statement "LAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" statement_identifier : (if_statement "if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" if (parenthesized_expression "(*param_3 == 0)" ( (binary_expression "*param_3 == 0" (pointer_expression "*param_3" * identifier) == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x728;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x728" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004a01e;" goto statement_identifier ;) }))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" identifier = (cast_expression "(undefined1 *)*param_2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(puVar2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar2 + 1)" ( (binary_expression "puVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" * (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" * (cast_expression "(int *)(param_1 + 0x220)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) ))))) )))) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" * identifier) = (binary_expression "*param_3 + -1" (pointer_expression "*param_3" * identifier) + number_literal)) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" * (cast_expression "(int *)(param_1 + 0x214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x214)" ( (binary_expression "param_1 + 0x214" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" if (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" ( (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" { (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" * (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" * (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" ( (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) , (binary_expression "*(int *)(param_1 + 0x218) + iVar8" (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) )))) + identifier) , (binary_expression "*(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218)" (pointer_expression "*(int *)(param_1 + 0x20c)" * (cast_expression "(int *)(param_1 + 0x20c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20c)" ( (binary_expression "param_1 + 0x20c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x218)" * (cast_expression "(int *)(param_1 + 0x218)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x218)" ( (binary_expression "param_1 + 0x218" identifier + number_literal) ))))) ))) ;) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" ( (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" { (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" identifier = (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))" ( (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x10)" * (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x10)" ( (binary_expression "*(int *)(param_1 + 0x74) + 0x10" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x84)" * (cast_expression "(undefined4 *)(param_1 + 0x84)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) )))) , identifier , (binary_expression "*(int *)(param_1 + 0x200) + 4" (pointer_expression "*(int *)(param_1 + 0x200)" * (cast_expression "(int *)(param_1 + 0x200)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x200)" ( (binary_expression "param_1 + 0x200" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" * (cast_expression "(undefined4 *)(param_1 + 0x21c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21c)" ( (binary_expression "param_1 + 0x21c" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar8 == 0) goto LAB_0004a92e;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004a92e;" goto statement_identifier ;)) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" identifier = (subscript_expression "piVar7[4]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_0004a412;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" else (compound_statement "{\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" { (if_statement "if (iVar8 == 0x6fc) goto LAB_0004a120;" if (parenthesized_expression "(iVar8 == 0x6fc)" ( (binary_expression "iVar8 == 0x6fc" identifier == number_literal) )) (goto_statement "goto LAB_0004a120;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x728) goto LAB_0004a360;" if (parenthesized_expression "(iVar8 == 0x728)" ( (binary_expression "iVar8 == 0x728" identifier == number_literal) )) (goto_statement "goto LAB_0004a360;" goto statement_identifier ;)) (if_statement "if (iVar8 == 0x6de) goto LAB_0004a060;" if (parenthesized_expression "(iVar8 == 0x6de)" ( (binary_expression "iVar8 == 0x6de" identifier == number_literal) )) (goto_statement "goto LAB_0004a060;" goto statement_identifier ;)) }))) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" identifier = (pointer_expression "*(int **)(param_1 + 0x220)" * (cast_expression "(int **)(param_1 + 0x220)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" * (cast_expression "(undefined4 *)(param_1 + 0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1b4)" ( (binary_expression "param_1 + 0x1b4" identifier + number_literal) )))) = number_literal) ;)) }))) (labeled_statement "LAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return piVar7;\n  }" { (return_statement "return piVar7;" return identifier ;) }))) (expression_statement "FUN_000a39d0();" (call_expression "FUN_000a39d0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 { (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (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) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (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 = (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % (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) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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) )))) , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (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) )))))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != 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) )))) , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (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 (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 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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) , (binary_expression LIT < IDENT)) ))) )) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (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 IDENT + 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_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 (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) , (binary_expression IDENT < LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (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 = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (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) )) (goto_statement goto statement_identifier ;))) (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 = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (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) )))) ))) ;) (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 (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (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 (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) )))) , (pointer_expression & IDENT) , LIT ))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (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 IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (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 (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (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 (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 (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) , (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 * (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) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (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 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) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (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) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) })) }) while (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 = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) }))) (expression_statement (assignment_expression IDENT = (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (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 (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) )))) , 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 * (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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) )))) , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (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) )))))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (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 (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) , (binary_expression (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) ))))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != 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) )))) , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (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) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int * FUN_00049fb0(int param_1,int *param_2,int *param_3)\n\n{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    \n  FUN_000a39d0();\n}" (primitive_type "int") (pointer_declarator "* FUN_00049fb0(int param_1,int *param_2,int *param_3)" (* "*") (function_declarator "FUN_00049fb0(int param_1,int *param_2,int *param_3)" (identifier "FUN_00049fb0") (parameter_list "(int param_1,int *param_2,int *param_3)" (( "(") (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"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  undefined1 *puVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int iVar11;\n  int in_GS_OFFSET;\n  int local_34;\n  void *local_2c;\n  size_t local_28;\n  uint local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x49fb9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar8 = *(int *)(param_1 + 0x1b4);\n  if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\nLAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }\n                    \n  FUN_000a39d0();\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "void *local_2c;" (primitive_type "void") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "size_t local_28;" (primitive_type "size_t") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x49fb9;" (assignment_expression "uStack_14 = 0x49fb9" (identifier "uStack_14") (= "=") (number_literal "0x49fb9")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x1b4);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x1b4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x1b4)" (* "*") (cast_expression "(int *)(param_1 + 0x1b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0x6b2) {\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }\n  else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" (if "if") (parenthesized_expression "(iVar8 == 0x6b2)" (( "(") (binary_expression "iVar8 == 0x6b2" (identifier "iVar8") (== "==") (number_literal "0x6b2")) () ")")) (compound_statement "{\nLAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);\n    iVar8 = *(int *)(param_1 + 100);\n    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }\nLAB_0004a660:\n    FUN_0002edf0(pcVar4);\n    FUN_0003a2d0();\n    iVar8 = *(int *)(param_1 + 0x220);\n    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));\n    FUN_0002f010(iVar8);\n    piVar7 = (int *)0x0;\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" ({ "{") (labeled_statement "LAB_0004a267:\n    do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);" (statement_identifier "LAB_0004a267") (: ":") (do_statement "do {\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    } while (iVar8 < 4);" (do "do") (compound_statement "{\n      if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }\n      puVar2 = (undefined1 *)*param_2;\n      *param_2 = (int)(puVar2 + 1);\n      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;\n      *param_3 = *param_3 + -1;\n      iVar8 = *(int *)(param_1 + 0x214) + 1;\n      *(int *)(param_1 + 0x214) = iVar8;\n    }" ({ "{") (if_statement "if (*param_3 == 0) {\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }" (if "if") (parenthesized_expression "(*param_3 == 0)" (( "(") (binary_expression "*param_3 == 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;\n        piVar7 = (int *)0x0;\n        goto LAB_0004a01e;\n      }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6b2;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6b2" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0x6b2")) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0004a01e;" (goto "goto") (statement_identifier "LAB_0004a01e") (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)*param_2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(puVar2 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n           *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")"))))) () ")")))) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" (identifier "iVar8") (= "=") (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 < 4)" (( "(") (binary_expression "iVar8 < 4" (identifier "iVar8") (< "<") (number_literal "4")) () ")")) (; ";"))) (expression_statement "iVar8 = *(int *)(param_1 + 100);" (assignment_expression "iVar8 = *(int *)(param_1 + 100)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (expression_statement "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "**(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (if_statement "if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }\n    else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" (if "if") (parenthesized_expression "((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0))" (( "(") (binary_expression "(iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)" (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(iVar8 + 0x30) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x30) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x30) & 2)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x30) & 2" (pointer_expression "*(byte *)(iVar8 + 0x30)" (* "*") (cast_expression "(byte *)(iVar8 + 0x30)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x30)" (( "(") (binary_expression "iVar8 + 0x30" (identifier "iVar8") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" ({ "{") (expression_statement "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" (identifier "uVar3") (= "=") (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" (identifier "FUN_0002e1f0") (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18)" (( "(") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                           uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" (* "*") (cast_expression "(uint *)(param_1 + 0x200)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}")) (else_clause "else {\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" (else "else") (compound_statement "{\n      local_24 = uVar3;\n      (**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));\n      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);\n      *(uint *)(param_1 + 0x200) = uVar3;\n    }" ({ "{") (expression_statement "local_24 = uVar3;" (assignment_expression "local_24 = uVar3" (identifier "local_24") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "(**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));" (call_expression "(**(code **)(iVar8 + 0x1c))\n                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(iVar8 + 0x1c))" (( "(") (pointer_expression "**(code **)(iVar8 + 0x1c)" (* "*") (pointer_expression "*(code **)(iVar8 + 0x1c)" (* "*") (cast_expression "(code **)(iVar8 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x1c)" (( "(") (binary_expression "iVar8 + 0x1c" (identifier "iVar8") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (number_literal "4") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x21c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21c)" (( "(") (binary_expression "param_1 + 0x21c" (identifier "param_1") (+ "+") (number_literal "0x21c")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" (identifier "uVar3") (= "=") (call_expression "FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" (identifier "FUN_0002e1f0") (argument_list "(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18)" (( "(") (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8\n                           | local_24 << 0x18" (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8" (binary_expression "local_24 >> 0x18 | (local_24 & 0xff0000) >> 8" (binary_expression "local_24 >> 0x18" (identifier "local_24") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_24 & 0xff0000) >> 8" (parenthesized_expression "(local_24 & 0xff0000)" (( "(") (binary_expression "local_24 & 0xff0000" (identifier "local_24") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_24 & 0xff00) << 8" (parenthesized_expression "(local_24 & 0xff00)" (( "(") (binary_expression "local_24 & 0xff00" (identifier "local_24") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_24 << 0x18" (identifier "local_24") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" (* "*") (cast_expression "(uint *)(param_1 + 0x200)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}")))) (if_statement "if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }\n    else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }" (if "if") (parenthesized_expression "((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0))" (( "(") (binary_expression "(uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)" (parenthesized_expression "(uVar3 < 0x9001)" (( "(") (binary_expression "uVar3 < 0x9001" (identifier "uVar3") (< "<") (number_literal "0x9001")) () ")")) (&& "&&") (parenthesized_expression "((int)uVar3 % *(int *)(param_1 + 0x218) == 0)" (( "(") (binary_expression "(int)uVar3 % *(int *)(param_1 + 0x218) == 0" (binary_expression "(int)uVar3 % *(int *)(param_1 + 0x218)" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (% "%") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")"))))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      iVar8 = *(int *)(param_1 + 0x220);\n      *(uint *)(param_1 + 0x20c) = uVar3 + 4;\n      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);\n      *(int *)(iVar8 + 0x1c) = iVar10;\n      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);\n      *(undefined4 *)(iVar8 + 0x10) = uVar6;\n      iVar8 = 4;\n      *(undefined4 *)(param_1 + 0x214) = 4;\n      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }\n      piVar7 = *(int **)(param_1 + 0x220);\n      iVar8 = piVar7[4];\n      if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\n      if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }\nLAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);\n      *(uint *)(param_1 + 0x204) = uVar3;\n      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }\n      pcVar4 = "Invalid padding length on received packet";\n    }" ({ "{") (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x20c) = uVar3 + 4;" (assignment_expression "*(uint *)(param_1 + 0x20c) = uVar3 + 4" (pointer_expression "*(uint *)(param_1 + 0x20c)" (* "*") (cast_expression "(uint *)(param_1 + 0x20c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (= "=") (binary_expression "uVar3 + 4" (identifier "uVar3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);" (assignment_expression "iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210)" (identifier "iVar10") (= "=") (binary_expression "uVar3 + 4 + *(int *)(param_1 + 0x210)" (binary_expression "uVar3 + 4" (identifier "uVar3") (+ "+") (number_literal "4")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))))) (; ";")) (expression_statement "*(int *)(iVar8 + 0x1c) = iVar10;" (assignment_expression "*(int *)(iVar8 + 0x1c) = iVar10" (pointer_expression "*(int *)(iVar8 + 0x1c)" (* "*") (cast_expression "(int *)(iVar8 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1c)" (( "(") (binary_expression "iVar8 + 0x1c" (identifier "iVar8") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" (identifier "uVar6") (= "=") (call_expression "FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" (identifier "FUN_0002eb80") (argument_list "(*(undefined4 *)(iVar8 + 0x10),iVar10,1)" (( "(") (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "iVar10") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar8 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "iVar8 = 4;" (assignment_expression "iVar8 = 4" (identifier "iVar8") (= "=") (number_literal "4")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 4;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 4" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x214)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (number_literal "4")) (; ";")) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }" (while "while") (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c))" (( "(") (binary_expression "iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (identifier "iVar8") (< "<") (binary_expression "*(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))))) () ")")) (compound_statement "{\nLAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }\n        puVar2 = (undefined1 *)*param_2;\n        *param_2 = (int)(puVar2 + 1);\n        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;\n        *param_3 = *param_3 + -1;\n        iVar8 = *(int *)(param_1 + 0x214) + 1;\n        *(int *)(param_1 + 0x214) = iVar8;\n      }" ({ "{") (labeled_statement "LAB_0004a060:\n        if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" (statement_identifier "LAB_0004a060") (: ":") (if_statement "if (*param_3 == 0) {\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" (if "if") (parenthesized_expression "(*param_3 == 0)" (( "(") (binary_expression "*param_3 == 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;\n          piVar7 = (int *)0x0;\n          goto LAB_0004a01e;\n        }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6de;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6de" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0x6de")) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0004a01e;" (goto "goto") (statement_identifier "LAB_0004a01e") (; ";")) (} "}")))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)*param_2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(puVar2 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n             *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")"))))) () ")")))) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" (identifier "iVar8") (= "=") (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));\n        if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" ({ "{") (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x10)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x10)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x10" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                           *(undefined4 *)(param_1 + 0x21c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x84)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")")))) (, ",") (identifier "iVar8") (, ",") (binary_expression "*(int *)(param_1 + 0x200) + 4" (pointer_expression "*(int *)(param_1 + 0x200)" (* "*") (cast_expression "(int *)(param_1 + 0x200)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (+ "+") (number_literal "4")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x21c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21c)" (( "(") (binary_expression "param_1 + 0x21c" (identifier "param_1") (+ "+") (number_literal "0x21c")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar8 == 0) {\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";\n          goto LAB_0004a660;\n        }" ({ "{") (labeled_statement "LAB_0004a92e:\n          pcVar4 = "Incorrect MAC received on packet";" (statement_identifier "LAB_0004a92e") (: ":") (expression_statement "pcVar4 = "Incorrect MAC received on packet";" (assignment_expression "pcVar4 = "Incorrect MAC received on packet"" (identifier "pcVar4") (= "=") (string_literal ""Incorrect MAC received on packet"" (" """) (string_content "Incorrect MAC received on packet") (" """))) (; ";"))) (goto_statement "goto LAB_0004a660;" (goto "goto") (statement_identifier "LAB_0004a660") (; ";")) (} "}"))) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n      }" ({ "{") (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) (, ",") (binary_expression "*(int *)(param_1 + 0x20c) + -4" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (+ "+") (number_literal "-4")) () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (labeled_statement "LAB_0004a412:\n      uVar3 = (uint)*(byte *)(iVar8 + 4);" (statement_identifier "LAB_0004a412") (: ":") (expression_statement "uVar3 = (uint)*(byte *)(iVar8 + 4);" (assignment_expression "uVar3 = (uint)*(byte *)(iVar8 + 4)" (identifier "uVar3") (= "=") (binary_expression "(uint)*(byte *)(iVar8 + 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar8 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 4)" (( "(") (binary_expression "iVar8 + 4" (identifier "iVar8") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "*(uint *)(param_1 + 0x204) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x204) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x204)" (* "*") (cast_expression "(uint *)(param_1 + 0x204)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x204)" (( "(") (binary_expression "param_1 + 0x204" (identifier "param_1") (+ "+") (number_literal "0x204")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }" (if "if") (parenthesized_expression "((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10))" (( "(") (binary_expression "(3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)" (parenthesized_expression "(3 < uVar3)" (( "(") (binary_expression "3 < uVar3" (number_literal "3") (< "<") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)" (( "(") (comma_expression "iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10" (assignment_expression "iVar10 = *(int *)(param_1 + 0x200) - uVar3" (identifier "iVar10") (= "=") (binary_expression "*(int *)(param_1 + 0x200) - uVar3" (pointer_expression "*(int *)(param_1 + 0x200)" (* "*") (cast_expression "(int *)(param_1 + 0x200)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (- "-") (identifier "uVar3"))) (, ",") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10"))) () ")"))) () ")")) (compound_statement "{\n        iVar11 = *(int *)(param_1 + 0x21c);\n        *(int *)(param_1 + 0x208) = iVar10 + -1;\n        iVar10 = *(int *)(param_1 + 0x20c);\n        piVar7[8] = iVar10;\n        *(int *)(param_1 + 0x21c) = iVar11 + 1;\n        piVar7[3] = iVar11;\n        iVar10 = iVar10 - uVar3;\n        *piVar7 = iVar10;\n        if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }\n        if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }\n        if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }\n        bVar1 = *(byte *)(piVar7[4] + 5);\n        *piVar7 = iVar10 + -6;\n        iVar8 = *(int *)(param_1 + 0x18);\n        piVar7[5] = piVar7[4] + 6;\n        piVar7[2] = (uint)bVar1;\n        if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }\n        piVar7[6] = 0;\n        goto LAB_0004a014;\n      }" ({ "{") (expression_statement "iVar11 = *(int *)(param_1 + 0x21c);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x21c)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x21c)" (* "*") (cast_expression "(int *)(param_1 + 0x21c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21c)" (( "(") (binary_expression "param_1 + 0x21c" (identifier "param_1") (+ "+") (number_literal "0x21c")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x208) = iVar10 + -1;" (assignment_expression "*(int *)(param_1 + 0x208) = iVar10 + -1" (pointer_expression "*(int *)(param_1 + 0x208)" (* "*") (cast_expression "(int *)(param_1 + 0x208)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x208)" (( "(") (binary_expression "param_1 + 0x208" (identifier "param_1") (+ "+") (number_literal "0x208")) () ")")))) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar10 = *(int *)(param_1 + 0x20c);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x20c)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")"))))) (; ";")) (expression_statement "piVar7[8] = iVar10;" (assignment_expression "piVar7[8] = iVar10" (subscript_expression "piVar7[8]" (identifier "piVar7") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(int *)(param_1 + 0x21c) = iVar11 + 1;" (assignment_expression "*(int *)(param_1 + 0x21c) = iVar11 + 1" (pointer_expression "*(int *)(param_1 + 0x21c)" (* "*") (cast_expression "(int *)(param_1 + 0x21c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21c)" (( "(") (binary_expression "param_1 + 0x21c" (identifier "param_1") (+ "+") (number_literal "0x21c")) () ")")))) (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar7[3] = iVar11;" (assignment_expression "piVar7[3] = iVar11" (subscript_expression "piVar7[3]" (identifier "piVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "iVar10 = iVar10 - uVar3;" (assignment_expression "iVar10 = iVar10 - uVar3" (identifier "iVar10") (= "=") (binary_expression "iVar10 - uVar3" (identifier "iVar10") (- "-") (identifier "uVar3"))) (; ";")) (expression_statement "*piVar7 = iVar10;" (assignment_expression "*piVar7 = iVar10" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (iVar10 < 0) {\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");\n        }" ({ "{") (expression_statement "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");" (call_expression "__assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" (identifier "__assert_fail") (argument_list "("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt")" (( "(") (string_literal ""st->pktin->length >= 0"" (" """) (string_content "st->pktin->length >= 0") (" """)) (, ",") (string_literal ""ssh.c"" (" """) (string_content "ssh.c") (" """)) (, ",") (number_literal "0x74f") (, ",") (string_literal ""ssh2_rdpkt"" (" """) (string_content "ssh2_rdpkt") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x8c) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x8c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x8c) != 0" (pointer_expression "*(int *)(param_1 + 0x8c)" (* "*") (cast_expression "(int *)(param_1 + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8c)" (( "(") (binary_expression "param_1 + 0x8c" (identifier "param_1") (+ "+") (number_literal "0x8c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);\n          if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n        }" ({ "{") (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28);" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))\n                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x8c) + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x8c) + 0x1c)" (( "(") (binary_expression "*(int *)(param_1 + 0x8c) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x8c)" (* "*") (cast_expression "(int *)(param_1 + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8c)" (( "(") (binary_expression "param_1 + 0x8c" (identifier "param_1") (+ "+") (number_literal "0x8c")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,\n                             &local_28)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x94)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x94)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")")))) (, ",") (binary_expression "iVar8 + 5" (identifier "iVar8") (+ "+") (number_literal "5")) (, ",") (binary_expression "iVar10 + -5" (identifier "iVar10") (+ "+") (number_literal "-5")) (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (iVar8 == 0) {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }\n          else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" ({ "{") (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar10 = *piVar7;" (assignment_expression "iVar10 = *piVar7" (identifier "iVar10") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (} "}")) (else_clause "else {\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" (else "else") (compound_statement "{\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar8 = local_28 + 5;\n            iVar10 = piVar7[4];\n            if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }\n            *piVar7 = iVar8;\n            memcpy((void *)(iVar10 + 5),local_2c,local_28);\n            FUN_0002f010(local_2c);\n            piVar7 = *(int **)(param_1 + 0x220);\n            iVar10 = *piVar7;\n          }" ({ "{") (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = local_28 + 5;" (assignment_expression "iVar8 = local_28 + 5" (identifier "iVar8") (= "=") (binary_expression "local_28 + 5" (identifier "local_28") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "iVar10 = piVar7[4];" (assignment_expression "iVar10 = piVar7[4]" (identifier "iVar10") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (piVar7[7] <= (int)(local_28 + 4)) {\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }" (if "if") (parenthesized_expression "(piVar7[7] <= (int)(local_28 + 4))" (( "(") (binary_expression "piVar7[7] <= (int)(local_28 + 4)" (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]")) (<= "<=") (cast_expression "(int)(local_28 + 4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_28 + 4)" (( "(") (binary_expression "local_28 + 4" (identifier "local_28") (+ "+") (number_literal "4")) () ")")))) () ")")) (compound_statement "{\n              piVar7[7] = iVar8;\n              iVar8 = FUN_0002eb80(iVar10,iVar8,1);\n              piVar7[4] = iVar8;\n              piVar7 = *(int **)(param_1 + 0x220);\n              iVar8 = local_28 + 5;\n              iVar10 = piVar7[4];\n            }" ({ "{") (expression_statement "piVar7[7] = iVar8;" (assignment_expression "piVar7[7] = iVar8" (subscript_expression "piVar7[7]" (identifier "piVar7") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar8 = FUN_0002eb80(iVar10,iVar8,1);" (assignment_expression "iVar8 = FUN_0002eb80(iVar10,iVar8,1)" (identifier "iVar8") (= "=") (call_expression "FUN_0002eb80(iVar10,iVar8,1)" (identifier "FUN_0002eb80") (argument_list "(iVar10,iVar8,1)" (( "(") (identifier "iVar10") (, ",") (identifier "iVar8") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "piVar7[4] = iVar8;" (assignment_expression "piVar7[4] = iVar8" (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = local_28 + 5;" (assignment_expression "iVar8 = local_28 + 5" (identifier "iVar8") (= "=") (binary_expression "local_28 + 5" (identifier "local_28") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "iVar10 = piVar7[4];" (assignment_expression "iVar10 = piVar7[4]" (identifier "iVar10") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (expression_statement "*piVar7 = iVar8;" (assignment_expression "*piVar7 = iVar8" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "memcpy((void *)(iVar10 + 5),local_2c,local_28);" (call_expression "memcpy((void *)(iVar10 + 5),local_2c,local_28)" (identifier "memcpy") (argument_list "((void *)(iVar10 + 5),local_2c,local_28)" (( "(") (cast_expression "(void *)(iVar10 + 5)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 5)" (( "(") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) () ")"))) (, ",") (identifier "local_2c") (, ",") (identifier "local_28") () ")"))) (; ";")) (expression_statement "FUN_0002f010(local_2c);" (call_expression "FUN_0002f010(local_2c)" (identifier "FUN_0002f010") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar10 = *piVar7;" (assignment_expression "iVar10 = *piVar7" (identifier "iVar10") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (iVar10 < 6) {\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }" (if "if") (parenthesized_expression "(iVar10 < 6)" (( "(") (binary_expression "iVar10 < 6" (identifier "iVar10") (< "<") (number_literal "6")) () ")")) (compound_statement "{\n          FUN_00049f80(param_1,piVar7);\n          piVar7 = (int *)0x0;\n          *(undefined4 *)(param_1 + 0x1b4) = 0;\n          goto LAB_0004a01e;\n        }" ({ "{") (expression_statement "FUN_00049f80(param_1,piVar7);" (call_expression "FUN_00049f80(param_1,piVar7)" (identifier "FUN_00049f80") (argument_list "(param_1,piVar7)" (( "(") (identifier "param_1") (, ",") (identifier "piVar7") () ")"))) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0004a01e;" (goto "goto") (statement_identifier "LAB_0004a01e") (; ";")) (} "}"))) (expression_statement "bVar1 = *(byte *)(piVar7[4] + 5);" (assignment_expression "bVar1 = *(byte *)(piVar7[4] + 5)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(piVar7[4] + 5)" (* "*") (cast_expression "(byte *)(piVar7[4] + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7[4] + 5)" (( "(") (binary_expression "piVar7[4] + 5" (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*piVar7 = iVar10 + -6;" (assignment_expression "*piVar7 = iVar10 + -6" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (binary_expression "iVar10 + -6" (identifier "iVar10") (+ "+") (number_literal "-6"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x18)" (identifier "iVar8") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "piVar7[5] = piVar7[4] + 6;" (assignment_expression "piVar7[5] = piVar7[4] + 6" (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "piVar7[4] + 6" (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "6"))) (; ";")) (expression_statement "piVar7[2] = (uint)bVar1;" (assignment_expression "piVar7[2] = (uint)bVar1" (subscript_expression "piVar7[2]" (identifier "piVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if (iVar8 != 0) {\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000399f0();\n          piVar7 = *(int **)(param_1 + 0x220);\n        }" ({ "{") (expression_statement "FUN_000399f0();" (call_expression "FUN_000399f0()" (identifier "FUN_000399f0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (} "}"))) (expression_statement "piVar7[6] = 0;" (assignment_expression "piVar7[6] = 0" (subscript_expression "piVar7[6]" (identifier "piVar7") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0004a014;" (goto "goto") (statement_identifier "LAB_0004a014") (; ";")) (} "}"))) (expression_statement "pcVar4 = "Invalid padding length on received packet";" (assignment_expression "pcVar4 = "Invalid padding length on received packet"" (identifier "pcVar4") (= "=") (string_literal ""Invalid padding length on received packet"" (" """) (string_content "Invalid padding length on received packet") (" """))) (; ";")) (} "}")) (else_clause "else {\n      pcVar4 = "Incoming packet length field was garbled";\n    }" (else "else") (compound_statement "{\n      pcVar4 = "Incoming packet length field was garbled";\n    }" ({ "{") (expression_statement "pcVar4 = "Incoming packet length field was garbled";" (assignment_expression "pcVar4 = "Incoming packet length field was garbled"" (identifier "pcVar4") (= "=") (string_literal ""Incoming packet length field was garbled"" (" """) (string_content "Incoming packet length field was garbled") (" """))) (; ";")) (} "}")))) (labeled_statement "LAB_0004a660:\n    FUN_0002edf0(pcVar4);" (statement_identifier "LAB_0004a660") (: ":") (expression_statement "FUN_0002edf0(pcVar4);" (call_expression "FUN_0002edf0(pcVar4)" (identifier "FUN_0002edf0") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")"))) (; ";"))) (expression_statement "FUN_0003a2d0();" (call_expression "FUN_0003a2d0()" (identifier "FUN_0003a2d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));" (call_expression "FUN_0002f010(*(undefined4 *)(iVar8 + 0x10))" (identifier "FUN_0002f010") (argument_list "(*(undefined4 *)(iVar8 + 0x10))" (( "(") (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_0002f010(iVar8);" (call_expression "FUN_0002f010(iVar8)" (identifier "FUN_0002f010") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" (else "else") (compound_statement "{\n    if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }\n    piVar7 = *(int **)(param_1 + 0x220);\nLAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;\n  }" ({ "{") (if_statement "if (iVar8 < 0x6b3) {\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }\n    else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" (if "if") (parenthesized_expression "(iVar8 < 0x6b3)" (( "(") (binary_expression "iVar8 < 0x6b3" (identifier "iVar8") (< "<") (number_literal "0x6b3")) () ")")) (compound_statement "{\n      if (iVar8 == 0x67c) goto LAB_0004a4f0;\n      if (iVar8 == 0x68d) goto LAB_0004a580;\n      if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }\n    }" ({ "{") (if_statement "if (iVar8 == 0x67c) goto LAB_0004a4f0;" (if "if") (parenthesized_expression "(iVar8 == 0x67c)" (( "(") (binary_expression "iVar8 == 0x67c" (identifier "iVar8") (== "==") (number_literal "0x67c")) () ")")) (goto_statement "goto LAB_0004a4f0;" (goto "goto") (statement_identifier "LAB_0004a4f0") (; ";"))) (if_statement "if (iVar8 == 0x68d) goto LAB_0004a580;" (if "if") (parenthesized_expression "(iVar8 == 0x68d)" (( "(") (binary_expression "iVar8 == 0x68d" (identifier "iVar8") (== "==") (number_literal "0x68d")) () ")")) (goto_statement "goto LAB_0004a580;" (goto "goto") (statement_identifier "LAB_0004a580") (; ";"))) (if_statement "if (iVar8 == 0) {\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);\n        puVar5[4] = 0;\n        puVar5[5] = 0;\n        puVar5[7] = 0;\n        *(undefined4 **)(param_1 + 0x220) = puVar5;\n        puVar5[2] = 0;\n        *puVar5 = 0;\n        iVar8 = *(int *)(param_1 + 100);\n        if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }\n        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);\n        puVar5[4] = uVar6;\n        *(undefined4 *)(param_1 + 0x200) = 0;\n        *(undefined4 *)(param_1 + 0x214) = 0;\n        iVar8 = 0;\n        while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }\n        uVar3 = *puVar9;\n        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);\n        *(uint *)(param_1 + 0x200) = uVar3;\n        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }\n        iVar10 = *(int *)(param_1 + 0x220);\n        *(int *)(param_1 + 0x20c) = iVar8;\n        iVar8 = iVar8 + *(int *)(param_1 + 0x210);\n        *(int *)(iVar10 + 0x1c) = iVar8;\n        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);\n        *(undefined4 *)(iVar10 + 0x10) = uVar6;\n        iVar8 = *(int *)(param_1 + 0x218);\n        *(int *)(param_1 + 0x214) = iVar8;\n        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }\n        piVar7 = *(int **)(param_1 + 0x220);\n        iVar8 = piVar7[4];\n        if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }\n        goto LAB_0004a412;\n      }" ({ "{") (expression_statement "puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);" (assignment_expression "puVar5 = (undefined4 *)FUN_0002e780(1,0x2c)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)FUN_0002e780(1,0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0002e780(1,0x2c)" (identifier "FUN_0002e780") (argument_list "(1,0x2c)" (( "(") (number_literal "1") (, ",") (number_literal "0x2c") () ")"))))) (; ";")) (expression_statement "puVar5[4] = 0;" (assignment_expression "puVar5[4] = 0" (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5[5] = 0;" (assignment_expression "puVar5[5] = 0" (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5[7] = 0;" (assignment_expression "puVar5[7] = 0" (subscript_expression "puVar5[7]" (identifier "puVar5") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 0x220) = puVar5;" (assignment_expression "*(undefined4 **)(param_1 + 0x220) = puVar5" (pointer_expression "*(undefined4 **)(param_1 + 0x220)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x220)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar5[2] = 0;" (assignment_expression "puVar5[2] = 0" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 100);" (assignment_expression "iVar8 = *(int *)(param_1 + 100)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (if_statement "if ((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }\n        else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" (if "if") (parenthesized_expression "((iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8))" (( "(") (binary_expression "(iVar8 == 0) ||\n           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)" (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)" (( "(") (comma_expression "iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8" (assignment_expression "iVar10 = *(int *)(iVar8 + 0x24)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar8 + 0x24)" (* "*") (cast_expression "(int *)(iVar8 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x24)" (( "(") (binary_expression "iVar8 + 0x24" (identifier "iVar8") (+ "+") (number_literal "0x24")) () ")"))))) (, ",") (comma_expression "*(int *)(param_1 + 0x218) = iVar10, iVar10 < 8" (assignment_expression "*(int *)(param_1 + 0x218) = iVar10" (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) (= "=") (identifier "iVar10")) (, ",") (binary_expression "iVar10 < 8" (identifier "iVar10") (< "<") (number_literal "8")))) () ")"))) () ")")) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x218) = 8;\n          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;\n          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n          *(int *)(param_1 + 0x210) = local_34;\n          if (iVar8 != 0) goto LAB_0004a220;\nLAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }\n        }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x218) = 8;" (assignment_expression "*(undefined4 *)(param_1 + 0x218) = 8" (pointer_expression "*(undefined4 *)(param_1 + 0x218)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x218)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) (= "=") (number_literal "8")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x74) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) == 0" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004a798;" (goto "goto") (statement_identifier "LAB_0004a798") (; ";"))) (expression_statement "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);" (assignment_expression "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c)" (identifier "local_34") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x74) + 0x2c)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x74) + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x2c)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x2c" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x210) = local_34;" (assignment_expression "*(int *)(param_1 + 0x210) = local_34" (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (if_statement "if (iVar8 != 0) goto LAB_0004a220;" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004a220;" (goto "goto") (statement_identifier "LAB_0004a220") (; ";"))) (labeled_statement "LAB_0004a72c:\n          if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" (statement_identifier "LAB_0004a72c") (: ":") (if_statement "if (*(int *)(param_1 + 0x7c) != 0) {\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x7c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x7c) != 0" (pointer_expression "*(int *)(param_1 + 0x7c)" (* "*") (cast_expression "(int *)(param_1 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7c)" (( "(") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x200) = 0;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            goto LAB_0004a267;\n          }" ({ "{") (labeled_statement "LAB_0004a239:\n            uVar6 = FUN_0002e780(4,1);" (statement_identifier "LAB_0004a239") (: ":") (expression_statement "uVar6 = FUN_0002e780(4,1);" (assignment_expression "uVar6 = FUN_0002e780(4,1)" (identifier "uVar6") (= "=") (call_expression "FUN_0002e780(4,1)" (identifier "FUN_0002e780") (argument_list "(4,1)" (( "(") (number_literal "4") (, ",") (number_literal "1") () ")")))) (; ";"))) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x200) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x200) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x200)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x200)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x214)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0004a267;" (goto "goto") (statement_identifier "LAB_0004a267") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" (else "else") (compound_statement "{\n          if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }\nLAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;\n        }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);\n            *(int *)(param_1 + 0x210) = local_34;\nLAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;\n            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;\n            uVar6 = FUN_0002e780(local_34 + 0x9000,1);\n            puVar5[4] = uVar6;\n            *(undefined4 *)(param_1 + 0x214) = 0;\n            iVar8 = 0;\n            while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }\n            *(undefined4 *)(param_1 + 0x20c) = 0;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));\n            uVar3 = *(uint *)(param_1 + 0x21c);\n            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;\n            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);\n            do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);\n            pcVar4 = "No valid incoming packet found";\n            goto LAB_0004a660;\n          }" ({ "{") (expression_statement "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);" (assignment_expression "local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c)" (identifier "local_34") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x74) + 0x2c)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x74) + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x2c)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x2c" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x210) = local_34;" (assignment_expression "*(int *)(param_1 + 0x210) = local_34" (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (labeled_statement "LAB_0004a220:\n            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;" (statement_identifier "LAB_0004a220") (: ":") (if_statement "if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x30) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x30) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x30) & 1)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x30) & 1" (pointer_expression "*(byte *)(iVar8 + 0x30)" (* "*") (cast_expression "(byte *)(iVar8 + 0x30)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x30)" (( "(") (binary_expression "iVar8 + 0x30" (identifier "iVar8") (+ "+") (number_literal "0x30")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004a72c;" (goto "goto") (statement_identifier "LAB_0004a72c") (; ";")))) (if_statement "if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x7c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x7c) != 0" (pointer_expression "*(int *)(param_1 + 0x7c)" (* "*") (cast_expression "(int *)(param_1 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7c)" (( "(") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004a239;" (goto "goto") (statement_identifier "LAB_0004a239") (; ";"))) (expression_statement "uVar6 = FUN_0002e780(local_34 + 0x9000,1);" (assignment_expression "uVar6 = FUN_0002e780(local_34 + 0x9000,1)" (identifier "uVar6") (= "=") (call_expression "FUN_0002e780(local_34 + 0x9000,1)" (identifier "FUN_0002e780") (argument_list "(local_34 + 0x9000,1)" (( "(") (binary_expression "local_34 + 0x9000" (identifier "local_34") (+ "+") (number_literal "0x9000")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x214)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210)) {\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }" (while "while") (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210))" (( "(") (binary_expression "iVar8 < *(int *)(param_1 + 0x210)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")"))))) () ")")) (compound_statement "{\nLAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }\n              puVar2 = (undefined1 *)*param_2;\n              *param_2 = (int)(puVar2 + 1);\n              *(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;\n              *param_3 = *param_3 + -1;\n              iVar8 = *(int *)(param_1 + 0x214) + 1;\n              *(int *)(param_1 + 0x214) = iVar8;\n            }" ({ "{") (labeled_statement "LAB_0004a4f0:\n              if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" (statement_identifier "LAB_0004a4f0") (: ":") (if_statement "if (*param_3 == 0) {\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" (if "if") (parenthesized_expression "(*param_3 == 0)" (( "(") (binary_expression "*param_3 == 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;\n                piVar7 = (int *)0x0;\n                goto LAB_0004a01e;\n              }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x67c;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x67c" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0x67c")) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0004a01e;" (goto "goto") (statement_identifier "LAB_0004a01e") (; ";")) (} "}")))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)*param_2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(puVar2 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;" (assignment_expression "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2" (pointer_expression "*(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (* "*") (cast_expression "(undefined1 *)\n               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")"))))) () ")")))) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" (identifier "iVar8") (= "=") (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x20c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x20c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x20c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x20c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x14)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x14" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x84))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x84)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar3 = *(uint *)(param_1 + 0x21c);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x21c)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0x21c)" (* "*") (cast_expression "(uint *)(param_1 + 0x21c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21c)" (( "(") (binary_expression "param_1 + 0x21c" (identifier "param_1") (+ "+") (number_literal "0x21c")) () ")"))))) (; ";")) (expression_statement "local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18;" (assignment_expression "local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18" (identifier "local_24") (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                       uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                      (*(undefined4 *)(param_1 + 0x84),&local_24,4)" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x18)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x18)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x18)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x18" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x84),&local_24,4)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x84)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")")))) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (number_literal "4") () ")"))) (; ";")) (do_statement "do {\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            } while (*(uint *)(param_1 + 0x20c) < 0x9000);" (do "do") (compound_statement "{\n              *(undefined4 *)(param_1 + 0x214) = 0;\n              iVar8 = 0;\n              while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }\n              (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));\n              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));\n              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);\n              *(int *)(param_1 + 0x20c) = iVar8;\n              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));\n              if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }\n            }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x214)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (while_statement "while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }" (while "while") (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x218))" (( "(") (binary_expression "iVar8 < *(int *)(param_1 + 0x218)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")"))))) () ")")) (compound_statement "{\nLAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }\n                puVar2 = (undefined1 *)*param_2;\n                iVar8 = *(int *)(param_1 + 0x220);\n                *param_2 = (int)(puVar2 + 1);\n                *(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;\n                *param_3 = *param_3 + -1;\n                iVar8 = *(int *)(param_1 + 0x214) + 1;\n                *(int *)(param_1 + 0x214) = iVar8;\n              }" ({ "{") (labeled_statement "LAB_0004a580:\n                if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" (statement_identifier "LAB_0004a580") (: ":") (if_statement "if (*param_3 == 0) {\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" (if "if") (parenthesized_expression "(*param_3 == 0)" (( "(") (binary_expression "*param_3 == 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;\n                  piVar7 = (int *)0x0;\n                  goto LAB_0004a01e;\n                }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x68d;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x68d" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0x68d")) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0004a01e;" (goto "goto") (statement_identifier "LAB_0004a01e") (; ";")) (} "}")))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)*param_2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x220)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(puVar2 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2;" (assignment_expression "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)) = *puVar2" (pointer_expression "*(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" (* "*") (cast_expression "(undefined1 *)\n                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214))" (( "(") (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +\n                 *(int *)(param_1 + 0x214)" (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210)" (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (+ "+") (pointer_expression "*(int *)(iVar8 + 0x10)" (* "*") (cast_expression "(int *)(iVar8 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")"))))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")"))))) () ")")))) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" (identifier "iVar8") (= "=") (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                        (*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x6c),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(int *)(param_1 + 0x218))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (+ "+") (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (, ",") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))\n                        (*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x18))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x18)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x18)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x18)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x18" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x84),\n                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),\n                         *(undefined4 *)(param_1 + 0x218))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x84)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")")))) (, ",") (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (+ "+") (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x218)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x218)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c)" (identifier "iVar8") (= "=") (binary_expression "*(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x20c) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x20c) = iVar8" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x20))\n                                (*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x20))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x20)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x20)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x20" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x84),\n                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x84)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")")))) (, ",") (binary_expression "iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10)" (identifier "iVar8") (+ "+") (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (if_statement "if (iVar8 != 0) {\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);\n                *(int *)(param_1 + 0x200) = iVar8;\n                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }\n              }" ({ "{") (expression_statement "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "**(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (expression_statement "iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18);" (assignment_expression "iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" (identifier "iVar8") (= "=") (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" (identifier "FUN_0002e1f0") (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18)" (( "(") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8\n                                     | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x200) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x200) = iVar8" (pointer_expression "*(int *)(param_1 + 0x200)" (* "*") (cast_expression "(int *)(param_1 + 0x200)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (if_statement "if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }" (if "if") (parenthesized_expression "(iVar8 == *(int *)(param_1 + 0x20c) + -4)" (( "(") (binary_expression "iVar8 == *(int *)(param_1 + 0x20c) + -4" (identifier "iVar8") (== "==") (binary_expression "*(int *)(param_1 + 0x20c) + -4" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (+ "+") (number_literal "-4"))) () ")")) (compound_statement "{\n                  iVar10 = *(int *)(param_1 + 0x220);\n                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);\n                  *(int *)(iVar10 + 0x1c) = iVar11;\n                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);\n                  *(undefined4 *)(iVar10 + 0x10) = uVar6;\n                  piVar7 = *(int **)(param_1 + 0x220);\n                  iVar8 = piVar7[4];\n                  goto LAB_0004a412;\n                }" ({ "{") (expression_statement "iVar10 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x220)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210)" (identifier "iVar11") (= "=") (binary_expression "*(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210)" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))))) (; ";")) (expression_statement "*(int *)(iVar10 + 0x1c) = iVar11;" (assignment_expression "*(int *)(iVar10 + 0x1c) = iVar11" (pointer_expression "*(int *)(iVar10 + 0x1c)" (* "*") (cast_expression "(int *)(iVar10 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x1c)" (( "(") (binary_expression "iVar10 + 0x1c" (identifier "iVar10") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" (identifier "uVar6") (= "=") (call_expression "FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" (identifier "FUN_0002eb80") (argument_list "(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8)" (( "(") (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "iVar11") (, ",") (number_literal "1") (, ",") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar10 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar10 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (goto_statement "goto LAB_0004a412;" (goto "goto") (statement_identifier "LAB_0004a412") (; ";")) (} "}"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(*(uint *)(param_1 + 0x20c) < 0x9000)" (( "(") (binary_expression "*(uint *)(param_1 + 0x20c) < 0x9000" (pointer_expression "*(uint *)(param_1 + 0x20c)" (* "*") (cast_expression "(uint *)(param_1 + 0x20c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (< "<") (number_literal "0x9000")) () ")")) (; ";")) (expression_statement "pcVar4 = "No valid incoming packet found";" (assignment_expression "pcVar4 = "No valid incoming packet found"" (identifier "pcVar4") (= "=") (string_literal ""No valid incoming packet found"" (" """) (string_content "No valid incoming packet found") (" """))) (; ";")) (goto_statement "goto LAB_0004a660;" (goto "goto") (statement_identifier "LAB_0004a660") (; ";")) (} "}"))) (labeled_statement "LAB_0004a798:\n          *(undefined4 *)(param_1 + 0x210) = 0;" (statement_identifier "LAB_0004a798") (: ":") (expression_statement "*(undefined4 *)(param_1 + 0x210) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x210) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x210)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x210)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (} "}")))) (expression_statement "uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);" (assignment_expression "uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1)" (identifier "uVar6") (= "=") (call_expression "FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1)" (identifier "FUN_0002e780") (argument_list "(*(undefined4 *)(param_1 + 0x218),1)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x218)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x218)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "puVar5[4] = uVar6;" (assignment_expression "puVar5[4] = uVar6" (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x200) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x200) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x200)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x200)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x214) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x214) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x214)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x214)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (while_statement "while (iVar8 < *(int *)(param_1 + 0x218)) {\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" (while "while") (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x218))" (( "(") (binary_expression "iVar8 < *(int *)(param_1 + 0x218)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")"))))) () ")")) (compound_statement "{\nLAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" ({ "{") (labeled_statement "LAB_0004a120:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" (statement_identifier "LAB_0004a120") (: ":") (if_statement "if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" (if "if") (parenthesized_expression "(*param_3 == 0)" (( "(") (binary_expression "*param_3 == 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x6fc;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x6fc" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0x6fc")) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0004a01e;" (goto "goto") (statement_identifier "LAB_0004a01e") (; ";")) (} "}")))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)*param_2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(puVar2 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")"))))) () ")")))) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" (identifier "iVar8") (= "=") (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (identifier "puVar9") (= "=") (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));\n          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);\n        }" ({ "{") (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (identifier "puVar9") (, ",") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);" (assignment_expression "puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (identifier "puVar9") (= "=") (pointer_expression "*(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(uint **)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" (identifier "uVar3") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18);" (assignment_expression "uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" (identifier "uVar3") (= "=") (call_expression "FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" (identifier "FUN_0002e1f0") (argument_list "(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18)" (( "(") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n                             uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x200) = uVar3;" (assignment_expression "*(uint *)(param_1 + 0x200) = uVar3" (pointer_expression "*(uint *)(param_1 + 0x200)" (* "*") (cast_expression "(uint *)(param_1 + 0x200)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" (if "if") (parenthesized_expression "((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0))" (( "(") (binary_expression "(0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)" (parenthesized_expression "(0x9000 < uVar3)" (( "(") (binary_expression "0x9000 < uVar3" (number_literal "0x9000") (< "<") (identifier "uVar3")) () ")")) (|| "||") (parenthesized_expression "(iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)" (( "(") (comma_expression "iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0" (assignment_expression "iVar8 = uVar3 + 4" (identifier "iVar8") (= "=") (binary_expression "uVar3 + 4" (identifier "uVar3") (+ "+") (number_literal "4"))) (, ",") (binary_expression "iVar8 % *(int *)(param_1 + 0x218) != 0" (binary_expression "iVar8 % *(int *)(param_1 + 0x218)" (identifier "iVar8") (% "%") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")"))))) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          pcVar4 = "Incoming packet was garbled on decryption";\n          goto LAB_0004a660;\n        }" ({ "{") (expression_statement "pcVar4 = "Incoming packet was garbled on decryption";" (assignment_expression "pcVar4 = "Incoming packet was garbled on decryption"" (identifier "pcVar4") (= "=") (string_literal ""Incoming packet was garbled on decryption"" (" """) (string_content "Incoming packet was garbled on decryption") (" """))) (; ";")) (goto_statement "goto LAB_0004a660;" (goto "goto") (statement_identifier "LAB_0004a660") (; ";")) (} "}"))) (expression_statement "iVar10 = *(int *)(param_1 + 0x220);" (assignment_expression "iVar10 = *(int *)(param_1 + 0x220)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x20c) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x20c) = iVar8" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar8 = iVar8 + *(int *)(param_1 + 0x210);" (assignment_expression "iVar8 = iVar8 + *(int *)(param_1 + 0x210)" (identifier "iVar8") (= "=") (binary_expression "iVar8 + *(int *)(param_1 + 0x210)" (identifier "iVar8") (+ "+") (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))))) (; ";")) (expression_statement "*(int *)(iVar10 + 0x1c) = iVar8;" (assignment_expression "*(int *)(iVar10 + 0x1c) = iVar8" (pointer_expression "*(int *)(iVar10 + 0x1c)" (* "*") (cast_expression "(int *)(iVar10 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x1c)" (( "(") (binary_expression "iVar10 + 0x1c" (identifier "iVar10") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);" (assignment_expression "uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" (identifier "uVar6") (= "=") (call_expression "FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" (identifier "FUN_0002eb80") (argument_list "(*(undefined4 *)(iVar10 + 0x10),iVar8,1)" (( "(") (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "iVar8") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar10 + 0x10) = uVar6;" (assignment_expression "*(undefined4 *)(iVar10 + 0x10) = uVar6" (pointer_expression "*(undefined4 *)(iVar10 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar10 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x218);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x218)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (while_statement "while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" (while "while") (parenthesized_expression "(iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c))" (( "(") (binary_expression "iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (identifier "iVar8") (< "<") (binary_expression "*(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)" (pointer_expression "*(int *)(param_1 + 0x210)" (* "*") (cast_expression "(int *)(param_1 + 0x210)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x210)" (( "(") (binary_expression "param_1 + 0x210" (identifier "param_1") (+ "+") (number_literal "0x210")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))))) () ")")) (compound_statement "{\nLAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }\n          puVar2 = (undefined1 *)*param_2;\n          *param_2 = (int)(puVar2 + 1);\n          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;\n          *param_3 = *param_3 + -1;\n          iVar8 = *(int *)(param_1 + 0x214) + 1;\n          *(int *)(param_1 + 0x214) = iVar8;\n        }" ({ "{") (labeled_statement "LAB_0004a360:\n          if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" (statement_identifier "LAB_0004a360") (: ":") (if_statement "if (*param_3 == 0) {\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" (if "if") (parenthesized_expression "(*param_3 == 0)" (( "(") (binary_expression "*param_3 == 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x1b4) = 0x728;\n            piVar7 = (int *)0x0;\n            goto LAB_0004a01e;\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0x728;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0x728" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0x728")) (; ";")) (expression_statement "piVar7 = (int *)0x0;" (assignment_expression "piVar7 = (int *)0x0" (identifier "piVar7") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0004a01e;" (goto "goto") (statement_identifier "LAB_0004a01e") (; ";")) (} "}")))) (expression_statement "puVar2 = (undefined1 *)*param_2;" (assignment_expression "puVar2 = (undefined1 *)*param_2" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)*param_2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_2 = (int)(puVar2 + 1);" (assignment_expression "*param_2 = (int)(puVar2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(puVar2 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar2 + 1)" (( "(") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2;" (assignment_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =\n               *puVar2" (pointer_expression "*(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (* "*") (cast_expression "(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214))" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)" (pointer_expression "*(int *)(*(int *)(param_1 + 0x220) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x220) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x220) + 0x10" (pointer_expression "*(int *)(param_1 + 0x220)" (* "*") (cast_expression "(int *)(param_1 + 0x220)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")"))))) () ")")))) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "*param_3 = *param_3 + -1;" (assignment_expression "*param_3 = *param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "*param_3 + -1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0x214) + 1;" (assignment_expression "iVar8 = *(int *)(param_1 + 0x214) + 1" (identifier "iVar8") (= "=") (binary_expression "*(int *)(param_1 + 0x214) + 1" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x214) = iVar8;" (assignment_expression "*(int *)(param_1 + 0x214) = iVar8" (pointer_expression "*(int *)(param_1 + 0x214)" (* "*") (cast_expression "(int *)(param_1 + 0x214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x214)" (( "(") (binary_expression "param_1 + 0x214" (identifier "param_1") (+ "+") (number_literal "0x214")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (*(int *)(param_1 + 100) != 0) {\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 100) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 100) != 0" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" ({ "{") (expression_statement "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));" (call_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))\n                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 100) + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 100) + 0x14)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 100) + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 100) + 0x14)" (( "(") (binary_expression "*(int *)(param_1 + 100) + 0x14" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,\n                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (binary_expression "*(int *)(param_1 + 0x218) + iVar8" (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")")))) (+ "+") (identifier "iVar8")) (, ",") (binary_expression "*(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218)" (pointer_expression "*(int *)(param_1 + 0x20c)" (* "*") (cast_expression "(int *)(param_1 + 0x20c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20c)" (( "(") (binary_expression "param_1 + 0x20c" (identifier "param_1") (+ "+") (number_literal "0x20c")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0x218)" (* "*") (cast_expression "(int *)(param_1 + 0x218)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x218)" (( "(") (binary_expression "param_1 + 0x218" (identifier "param_1") (+ "+") (number_literal "0x218")) () ")"))))) () ")"))) (; ";")) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x74) != 0) {\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x74) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) != 0" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));\n          if (iVar8 == 0) goto LAB_0004a92e;\n          piVar7 = *(int **)(param_1 + 0x220);\n          iVar8 = piVar7[4];\n        }" ({ "{") (expression_statement "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c));" (assignment_expression "iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))\n                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" (parenthesized_expression "(**(code **)(*(int *)(param_1 + 0x74) + 0x10))" (( "(") (pointer_expression "**(code **)(*(int *)(param_1 + 0x74) + 0x10)" (* "*") (pointer_expression "*(code **)(*(int *)(param_1 + 0x74) + 0x10)" (* "*") (cast_expression "(code **)(*(int *)(param_1 + 0x74) + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + 0x10" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,\n                             *(undefined4 *)(param_1 + 0x21c))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x84)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x84)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")")))) (, ",") (identifier "iVar8") (, ",") (binary_expression "*(int *)(param_1 + 0x200) + 4" (pointer_expression "*(int *)(param_1 + 0x200)" (* "*") (cast_expression "(int *)(param_1 + 0x200)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x200)" (( "(") (binary_expression "param_1 + 0x200" (identifier "param_1") (+ "+") (number_literal "0x200")) () ")")))) (+ "+") (number_literal "4")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x21c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x21c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21c)" (( "(") (binary_expression "param_1 + 0x21c" (identifier "param_1") (+ "+") (number_literal "0x21c")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar8 == 0) goto LAB_0004a92e;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004a92e;" (goto "goto") (statement_identifier "LAB_0004a92e") (; ";"))) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "iVar8 = piVar7[4];" (assignment_expression "iVar8 = piVar7[4]" (identifier "iVar8") (= "=") (subscript_expression "piVar7[4]" (identifier "piVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0004a412;" (goto "goto") (statement_identifier "LAB_0004a412") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" (else "else") (compound_statement "{\n      if (iVar8 == 0x6fc) goto LAB_0004a120;\n      if (iVar8 == 0x728) goto LAB_0004a360;\n      if (iVar8 == 0x6de) goto LAB_0004a060;\n    }" ({ "{") (if_statement "if (iVar8 == 0x6fc) goto LAB_0004a120;" (if "if") (parenthesized_expression "(iVar8 == 0x6fc)" (( "(") (binary_expression "iVar8 == 0x6fc" (identifier "iVar8") (== "==") (number_literal "0x6fc")) () ")")) (goto_statement "goto LAB_0004a120;" (goto "goto") (statement_identifier "LAB_0004a120") (; ";"))) (if_statement "if (iVar8 == 0x728) goto LAB_0004a360;" (if "if") (parenthesized_expression "(iVar8 == 0x728)" (( "(") (binary_expression "iVar8 == 0x728" (identifier "iVar8") (== "==") (number_literal "0x728")) () ")")) (goto_statement "goto LAB_0004a360;" (goto "goto") (statement_identifier "LAB_0004a360") (; ";"))) (if_statement "if (iVar8 == 0x6de) goto LAB_0004a060;" (if "if") (parenthesized_expression "(iVar8 == 0x6de)" (( "(") (binary_expression "iVar8 == 0x6de" (identifier "iVar8") (== "==") (number_literal "0x6de")) () ")")) (goto_statement "goto LAB_0004a060;" (goto "goto") (statement_identifier "LAB_0004a060") (; ";"))) (} "}")))) (expression_statement "piVar7 = *(int **)(param_1 + 0x220);" (assignment_expression "piVar7 = *(int **)(param_1 + 0x220)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_1 + 0x220)" (* "*") (cast_expression "(int **)(param_1 + 0x220)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (labeled_statement "LAB_0004a014:\n    *(undefined4 *)(param_1 + 0x1b4) = 0;" (statement_identifier "LAB_0004a014") (: ":") (expression_statement "*(undefined4 *)(param_1 + 0x1b4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1b4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1b4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1b4)" (( "(") (binary_expression "param_1 + 0x1b4" (identifier "param_1") (+ "+") (number_literal "0x1b4")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (} "}")))) (labeled_statement "LAB_0004a01e:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }" (statement_identifier "LAB_0004a01e") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return piVar7;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return piVar7;\n  }" ({ "{") (return_statement "return piVar7;" (return "return") (identifier "piVar7") (; ";")) (} "}")))) (expression_statement "FUN_000a39d0();" (call_expression "FUN_000a39d0()" (identifier "FUN_000a39d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

type_1 * function_1(type_2 ssh,type_3 **data,int *datalen)

{
  int var_22;
  type_4 bVar2;
  type_3 auVar3 [4];
  type_5 var_8;
  void *var_15;
  type_6 *var_4;
  type_7 var_6;
  int var_2;
  char *pcVar9;
  type_1 *pPVar10;
  type_3 *var_3;
  int var_21;
  size_t sVar13;
  type_7 *puVar14;
  long var_9;
  int var_1;
  int var_20;
  type_3 *newpayload;
  int var_11;
  type_3 seq [4];
  
  var_22 = *(int *)(var_1 + 0x14);
  var_2 = ssh->ssh2_rdpkt_crstate;
  if (var_2 == 0x6b2) {
LAB_0004a267:
    do {
      if (*datalen == 0) {
        ssh->ssh2_rdpkt_crstate = 0x6b2;
        pPVar10 = (type_1 *)0x0;
        goto LAB_0004a01e;
      }
      var_3 = *data;
      *data = var_3 + 1;
      ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *var_3;
      *datalen = *datalen + -1;
      var_2 = (ssh->rdpkt2_state).i + 1;
      (ssh->rdpkt2_state).i = var_2;
    } while (var_2 < 4);
    var_4 = ssh->sccipher;
    auVar3 = *(type_3 (*) [4])((ssh->rdpkt2_state).pktin)->data;
    if ((var_4 == (type_6 *)0x0) || ((var_4->flags & 2) == 0)) {
      var_6 = var_5((type_7)auVar3 >> 0x18 | ((type_7)auVar3 & 0xff0000) >> 8 |
                    ((type_7)auVar3 & 0xff00) << 8 | (int)auVar3 << 0x18);
      (ssh->rdpkt2_state).len = var_6;
    }
    else {
      seq = auVar3;
      (*var_4->decrypt_length)(ssh->sc_cipher_ctx,seq,4,(ssh->rdpkt2_state).incoming_sequence);
      var_6 = var_5((type_7)seq >> 0x18 | ((type_7)seq & 0xff0000) >> 8 | ((type_7)seq & 0xff00) << 8 |
                    (int)seq << 0x18);
      (ssh->rdpkt2_state).len = var_6;
    }
    if ((var_6 < 0x9001) && ((int)var_6 % (ssh->rdpkt2_state).cipherblk == 0)) {
      pPVar10 = (ssh->rdpkt2_state).pktin;
      (ssh->rdpkt2_state).packetlen = var_6 + 4;
      sVar13 = var_6 + 4 + (ssh->rdpkt2_state).maclen;
      pPVar10->maxlen = sVar13;
      var_3 = (type_3 *)var_7(pPVar10->data,sVar13,1);
      pPVar10->data = var_3;
      var_2 = 4;
      (ssh->rdpkt2_state).i = 4;
      while (var_2 < (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen) {
LAB_0004a060:
        if (*datalen == 0) {
          ssh->ssh2_rdpkt_crstate = 0x6de;
          pPVar10 = (type_1 *)0x0;
          goto LAB_0004a01e;
        }
        var_3 = *data;
        *data = var_3 + 1;
        ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *var_3;
        *datalen = *datalen + -1;
        var_2 = (ssh->rdpkt2_state).i + 1;
        (ssh->rdpkt2_state).i = var_2;
      }
      pPVar10 = (ssh->rdpkt2_state).pktin;
      var_3 = pPVar10->data;
      if (ssh->scmac != (type_8 *)0x0) {
        var_2 = (*ssh->scmac->verify)
                          (ssh->sc_mac_ctx,var_3,(ssh->rdpkt2_state).len + 4,
                           (ssh->rdpkt2_state).incoming_sequence);
        if (var_2 == 0) {
LAB_0004a92e:
          pcVar9 = "Incorrect MAC received on packet";
          goto LAB_0004a660;
        }
        pPVar10 = (ssh->rdpkt2_state).pktin;
        var_3 = pPVar10->data;
      }
      if (ssh->sccipher != (type_6 *)0x0) {
        (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,var_3 + 4,(ssh->rdpkt2_state).packetlen + -4)
        ;
        pPVar10 = (ssh->rdpkt2_state).pktin;
        var_3 = pPVar10->data;
      }
LAB_0004a412:
      var_6 = (type_7)var_3[4];
      (ssh->rdpkt2_state).pad = var_6;
      if ((3 < var_6) && (var_2 = (ssh->rdpkt2_state).len - var_6, 0 < var_2)) {
        var_8 = (ssh->rdpkt2_state).incoming_sequence;
        (ssh->rdpkt2_state).payload = var_2 + -1;
        var_2 = (ssh->rdpkt2_state).packetlen;
        pPVar10->encrypted_len = var_2;
        (ssh->rdpkt2_state).incoming_sequence = var_8 + 1;
        pPVar10->sequence = var_8;
        var_9 = var_2 - var_6;
        pPVar10->length = var_9;
        if (var_9 < 0) {
                    /* WARNING: Subroutine does not return */
          var_10("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");
        }
        if (ssh->sccomp != (type_9 *)0x0) {
          var_2 = (*ssh->sccomp->decompress)
                            (ssh->sc_comp_ctx,var_3 + 5,var_9 + -5,&newpayload,&var_11);
          if (var_2 == 0) {
            pPVar10 = (ssh->rdpkt2_state).pktin;
            var_9 = pPVar10->length;
          }
          else {
            pPVar10 = (ssh->rdpkt2_state).pktin;
            sVar13 = var_11 + 5;
            var_3 = pPVar10->data;
            if (pPVar10->maxlen <= var_11 + 4) {
              pPVar10->maxlen = sVar13;
              var_3 = (type_3 *)var_7(var_3,sVar13,1);
              pPVar10->data = var_3;
              pPVar10 = (ssh->rdpkt2_state).pktin;
              sVar13 = var_11 + 5;
              var_3 = pPVar10->data;
            }
            pPVar10->length = sVar13;
            var_12(var_3 + 5,newpayload,var_11);
            var_13(newpayload);
            pPVar10 = (ssh->rdpkt2_state).pktin;
            var_9 = pPVar10->length;
          }
        }
        if (var_9 < 6) {
          var_14(ssh,pPVar10);
          pPVar10 = (type_1 *)0x0;
          ssh->ssh2_rdpkt_crstate = 0;
          goto LAB_0004a01e;
        }
        bVar2 = pPVar10->data[5];
        pPVar10->length = var_9 + -6;
        var_15 = ssh->logctx;
        pPVar10->body = pPVar10->data + 6;
        pPVar10->type = (type_7)bVar2;
        if (var_15 != (void *)0x0) {
          var_16(ssh,pPVar10);
          pPVar10 = (ssh->rdpkt2_state).pktin;
        }
        pPVar10->savedpos = 0;
        goto LAB_0004a014;
      }
      pcVar9 = "Invalid padding length on received packet";
    }
    else {
      pcVar9 = "Incoming packet length field was garbled";
    }
LAB_0004a660:
    pcVar9 = var_17(pcVar9);
    var_18(ssh,pcVar9);
    pPVar10 = (ssh->rdpkt2_state).pktin;
    var_13(pPVar10->data);
    var_13(pPVar10);
    pPVar10 = (type_1 *)0x0;
    ssh->ssh2_rdpkt_crstate = 0;
  }
  else {
    if (var_2 < 0x6b3) {
      if (var_2 == 0x67c) goto LAB_0004a4f0;
      if (var_2 == 0x68d) goto LAB_0004a580;
      if (var_2 == 0) {
        pPVar10 = (type_1 *)var_19(1,0x2c);
        pPVar10->data = (type_3 *)0x0;
        pPVar10->body = (type_3 *)0x0;
        pPVar10->maxlen = 0;
        (ssh->rdpkt2_state).pktin = pPVar10;
        pPVar10->type = 0;
        pPVar10->length = 0;
        var_4 = ssh->sccipher;
        if ((var_4 == (type_6 *)0x0) ||
           (var_2 = var_4->blksize, (ssh->rdpkt2_state).cipherblk = var_2, var_2 < 8)) {
          (ssh->rdpkt2_state).cipherblk = 8;
          if (ssh->scmac == (type_8 *)0x0) goto LAB_0004a798;
          var_20 = ssh->scmac->len;
          (ssh->rdpkt2_state).maclen = var_20;
          if (var_4 != (type_6 *)0x0) goto LAB_0004a220;
LAB_0004a72c:
          if (ssh->scmac_etm != 0) {
LAB_0004a239:
            var_3 = (type_3 *)var_19(4,1);
            pPVar10->data = var_3;
            (ssh->rdpkt2_state).len = 0;
            (ssh->rdpkt2_state).i = 0;
            goto LAB_0004a267;
          }
        }
        else {
          if (ssh->scmac != (type_8 *)0x0) {
            var_20 = ssh->scmac->len;
            (ssh->rdpkt2_state).maclen = var_20;
LAB_0004a220:
            if ((var_4->flags & 1) == 0) goto LAB_0004a72c;
            if (ssh->scmac_etm != 0) goto LAB_0004a239;
            var_3 = (type_3 *)var_19(var_20 + 0x9000,1);
            pPVar10->data = var_3;
            (ssh->rdpkt2_state).i = 0;
            var_2 = 0;
            while (var_2 < (ssh->rdpkt2_state).maclen) {
LAB_0004a4f0:
              if (*datalen == 0) {
                ssh->ssh2_rdpkt_crstate = 0x67c;
                pPVar10 = (type_1 *)0x0;
                goto LAB_0004a01e;
              }
              var_3 = *data;
              *data = var_3 + 1;
              ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *var_3;
              *datalen = *datalen + -1;
              var_2 = (ssh->rdpkt2_state).i + 1;
              (ssh->rdpkt2_state).i = var_2;
            }
            (ssh->rdpkt2_state).packetlen = 0;
            (*ssh->scmac->start)(ssh->sc_mac_ctx);
            var_6 = (ssh->rdpkt2_state).incoming_sequence;
            seq = (type_3  [4])
                  (var_6 >> 0x18 | (var_6 & 0xff0000) >> 8 | (var_6 & 0xff00) << 8 | var_6 << 0x18);
            (*ssh->scmac->bytes)(ssh->sc_mac_ctx,seq,4);
            do {
              (ssh->rdpkt2_state).i = 0;
              var_2 = 0;
              while (var_21 = (ssh->rdpkt2_state).cipherblk, var_2 < var_21) {
LAB_0004a580:
                if (*datalen == 0) {
                  ssh->ssh2_rdpkt_crstate = 0x68d;
                  pPVar10 = (type_1 *)0x0;
                  goto LAB_0004a01e;
                }
                var_3 = *data;
                pPVar10 = (ssh->rdpkt2_state).pktin;
                *data = var_3 + 1;
                pPVar10->data
                [(ssh->rdpkt2_state).i + (ssh->rdpkt2_state).maclen + (ssh->rdpkt2_state).packetlen]
                     = *var_3;
                *datalen = *datalen + -1;
                var_2 = (ssh->rdpkt2_state).i + 1;
                (ssh->rdpkt2_state).i = var_2;
              }
              (*ssh->sccipher->decrypt)
                        (ssh->sc_cipher_ctx,
                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,var_21);
              (*ssh->scmac->bytes)
                        (ssh->sc_mac_ctx,
                         ((ssh->rdpkt2_state).pktin)->data + (ssh->rdpkt2_state).packetlen,
                         (ssh->rdpkt2_state).cipherblk);
              var_2 = (ssh->rdpkt2_state).cipherblk + (ssh->rdpkt2_state).packetlen;
              (ssh->rdpkt2_state).packetlen = var_2;
              var_2 = (*ssh->scmac->verresult)
                                (ssh->sc_mac_ctx,((ssh->rdpkt2_state).pktin)->data + var_2);
              if (var_2 != 0) {
                var_6 = *(type_7 *)((ssh->rdpkt2_state).pktin)->data;
                var_21 = var_5(var_6 >> 0x18 | (var_6 & 0xff0000) >> 8 | (var_6 & 0xff00) << 8 |
                               var_6 << 0x18);
                var_2 = (ssh->rdpkt2_state).packetlen;
                (ssh->rdpkt2_state).len = var_21;
                if (var_21 == var_2 + -4) {
                  pPVar10 = (ssh->rdpkt2_state).pktin;
                  sVar13 = var_2 + (ssh->rdpkt2_state).maclen;
                  pPVar10->maxlen = sVar13;
                  var_3 = (type_3 *)var_7(pPVar10->data,sVar13,1);
                  pPVar10->data = var_3;
                  pPVar10 = (ssh->rdpkt2_state).pktin;
                  var_3 = pPVar10->data;
                  goto LAB_0004a412;
                }
              }
            } while ((type_7)(ssh->rdpkt2_state).packetlen < 0x9000);
            pcVar9 = "No valid incoming packet found";
            goto LAB_0004a660;
          }
LAB_0004a798:
          (ssh->rdpkt2_state).maclen = 0;
        }
        var_3 = (type_3 *)var_19((ssh->rdpkt2_state).cipherblk,1);
        pPVar10->data = var_3;
        (ssh->rdpkt2_state).len = 0;
        (ssh->rdpkt2_state).i = 0;
        var_2 = 0;
        while (var_21 = (ssh->rdpkt2_state).cipherblk, var_2 < var_21) {
LAB_0004a120:
          if (*datalen == 0) {
            ssh->ssh2_rdpkt_crstate = 0x6fc;
            pPVar10 = (type_1 *)0x0;
            goto LAB_0004a01e;
          }
          var_3 = *data;
          *data = var_3 + 1;
          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *var_3;
          *datalen = *datalen + -1;
          var_2 = (ssh->rdpkt2_state).i + 1;
          (ssh->rdpkt2_state).i = var_2;
        }
        puVar14 = (type_7 *)((ssh->rdpkt2_state).pktin)->data;
        if (ssh->sccipher != (type_6 *)0x0) {
          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,(type_3 *)puVar14,var_21);
          puVar14 = (type_7 *)((ssh->rdpkt2_state).pktin)->data;
        }
        var_6 = *puVar14;
        var_6 = var_5(var_6 >> 0x18 | (var_6 & 0xff0000) >> 8 | (var_6 & 0xff00) << 8 |
                      var_6 << 0x18);
        (ssh->rdpkt2_state).len = var_6;
        if ((0x9000 < var_6) || (var_2 = var_6 + 4, var_2 % (ssh->rdpkt2_state).cipherblk != 0)) {
          pcVar9 = "Incoming packet was garbled on decryption";
          goto LAB_0004a660;
        }
        pPVar10 = (ssh->rdpkt2_state).pktin;
        (ssh->rdpkt2_state).packetlen = var_2;
        sVar13 = var_2 + (ssh->rdpkt2_state).maclen;
        pPVar10->maxlen = sVar13;
        var_3 = (type_3 *)var_7(pPVar10->data,sVar13,1);
        pPVar10->data = var_3;
        var_2 = (ssh->rdpkt2_state).cipherblk;
        (ssh->rdpkt2_state).i = var_2;
        while (var_21 = (ssh->rdpkt2_state).packetlen, var_2 < (ssh->rdpkt2_state).maclen + var_21)
        {
LAB_0004a360:
          if (*datalen == 0) {
            ssh->ssh2_rdpkt_crstate = 0x728;
            pPVar10 = (type_1 *)0x0;
            goto LAB_0004a01e;
          }
          var_3 = *data;
          *data = var_3 + 1;
          ((ssh->rdpkt2_state).pktin)->data[(ssh->rdpkt2_state).i] = *var_3;
          *datalen = *datalen + -1;
          var_2 = (ssh->rdpkt2_state).i + 1;
          (ssh->rdpkt2_state).i = var_2;
        }
        pPVar10 = (ssh->rdpkt2_state).pktin;
        var_3 = pPVar10->data;
        if (ssh->sccipher != (type_6 *)0x0) {
          var_2 = (ssh->rdpkt2_state).cipherblk;
          (*ssh->sccipher->decrypt)(ssh->sc_cipher_ctx,var_3 + var_2,var_21 - var_2);
          pPVar10 = (ssh->rdpkt2_state).pktin;
          var_3 = pPVar10->data;
        }
        if (ssh->scmac != (type_8 *)0x0) {
          var_2 = (*ssh->scmac->verify)
                            (ssh->sc_mac_ctx,var_3,(ssh->rdpkt2_state).len + 4,
                             (ssh->rdpkt2_state).incoming_sequence);
          if (var_2 == 0) goto LAB_0004a92e;
          pPVar10 = (ssh->rdpkt2_state).pktin;
          var_3 = pPVar10->data;
        }
        goto LAB_0004a412;
      }
    }
    else {
      if (var_2 == 0x6fc) goto LAB_0004a120;
      if (var_2 == 0x728) goto LAB_0004a360;
      if (var_2 == 0x6de) goto LAB_0004a060;
    }
    pPVar10 = (ssh->rdpkt2_state).pktin;
LAB_0004a014:
    ssh->ssh2_rdpkt_crstate = 0;
  }
LAB_0004a01e:
  if (var_22 == *(int *)(var_1 + 0x14)) {
    return pPVar10;
  }
                    /* WARNING: Subroutine does not return */
  var_23();
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator 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))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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 (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier)))) condition: (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: (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)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (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: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (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: (identifier))) (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))))) (identifier) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_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: (number_literal))))) right: (number_literal))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))))) body: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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))))) (identifier) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (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: (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: (identifier) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (binary_expression left: (number_literal) right: (identifier)))))) 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: (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)))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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 (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (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: (identifier) 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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) 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 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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (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))) (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: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) 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)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (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)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (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))))))) (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: (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: (comma_expression left: (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: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_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 (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier)))))) alternative: (else_clause (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (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: (goto_statement label: (statement_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: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) body: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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: (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)))))))) (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: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (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: (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))))) (pointer_expression argument: (identifier)) (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) body: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (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: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (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)))))) (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 (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (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)))))) (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (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)))))))))) (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: (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)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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))))) (identifier) (number_literal) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier))))))) condition: (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)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) body: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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: (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))))))) (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 (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))))) (identifier) (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: (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))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (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) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))))) body: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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))))) (identifier) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (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))))))) (labeled_statement label: (statement_identifier) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * MASKED(int param_1,int *param_2,int *param_3)

{
  byte bVar1;
  undefined1 *puVar2;
  uint uVar3;
  char *pcVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int *piVar7;
  int iVar8;
  uint *puVar9;
  int iVar10;
  int iVar11;
  int in_GS_OFFSET;
  int local_34;
  void *local_2c;
  size_t local_28;
  uint local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x49fb9;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar8 = *(int *)(param_1 + 0x1b4);
  if (iVar8 == 0x6b2) {
LAB_0004a267:
    do {
      if (*param_3 == 0) {
        *(undefined4 *)(param_1 + 0x1b4) = 0x6b2;
        piVar7 = (int *)0x0;
        goto LAB_0004a01e;
      }
      puVar2 = (undefined1 *)*param_2;
      *param_2 = (int)(puVar2 + 1);
      *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
           *puVar2;
      *param_3 = *param_3 + -1;
      iVar8 = *(int *)(param_1 + 0x214) + 1;
      *(int *)(param_1 + 0x214) = iVar8;
    } while (iVar8 < 4);
    iVar8 = *(int *)(param_1 + 100);
    uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);
    if ((iVar8 == 0) || ((*(byte *)(iVar8 + 0x30) & 2) == 0)) {
      uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                           uVar3 << 0x18);
      *(uint *)(param_1 + 0x200) = uVar3;
    }
    else {
      local_24 = uVar3;
      (**(code **)(iVar8 + 0x1c))
                (*(undefined4 *)(param_1 + 0x6c),&local_24,4,*(undefined4 *)(param_1 + 0x21c));
      uVar3 = FUN_0002e1f0(local_24 >> 0x18 | (local_24 & 0xff0000) >> 8 | (local_24 & 0xff00) << 8
                           | local_24 << 0x18);
      *(uint *)(param_1 + 0x200) = uVar3;
    }
    if ((uVar3 < 0x9001) && ((int)uVar3 % *(int *)(param_1 + 0x218) == 0)) {
      iVar8 = *(int *)(param_1 + 0x220);
      *(uint *)(param_1 + 0x20c) = uVar3 + 4;
      iVar10 = uVar3 + 4 + *(int *)(param_1 + 0x210);
      *(int *)(iVar8 + 0x1c) = iVar10;
      uVar6 = FUN_0002eb80(*(undefined4 *)(iVar8 + 0x10),iVar10,1);
      *(undefined4 *)(iVar8 + 0x10) = uVar6;
      iVar8 = 4;
      *(undefined4 *)(param_1 + 0x214) = 4;
      while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {
LAB_0004a060:
        if (*param_3 == 0) {
          *(undefined4 *)(param_1 + 0x1b4) = 0x6de;
          piVar7 = (int *)0x0;
          goto LAB_0004a01e;
        }
        puVar2 = (undefined1 *)*param_2;
        *param_2 = (int)(puVar2 + 1);
        *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
             *puVar2;
        *param_3 = *param_3 + -1;
        iVar8 = *(int *)(param_1 + 0x214) + 1;
        *(int *)(param_1 + 0x214) = iVar8;
      }
      piVar7 = *(int **)(param_1 + 0x220);
      iVar8 = piVar7[4];
      if (*(int *)(param_1 + 0x74) != 0) {
        iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))
                          (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,
                           *(undefined4 *)(param_1 + 0x21c));
        if (iVar8 == 0) {
LAB_0004a92e:
          pcVar4 = "Incorrect MAC received on packet";
          goto LAB_0004a660;
        }
        piVar7 = *(int **)(param_1 + 0x220);
        iVar8 = piVar7[4];
      }
      if (*(int *)(param_1 + 100) != 0) {
        (**(code **)(*(int *)(param_1 + 100) + 0x14))
                  (*(undefined4 *)(param_1 + 0x6c),iVar8 + 4,*(int *)(param_1 + 0x20c) + -4);
        piVar7 = *(int **)(param_1 + 0x220);
        iVar8 = piVar7[4];
      }
LAB_0004a412:
      uVar3 = (uint)*(byte *)(iVar8 + 4);
      *(uint *)(param_1 + 0x204) = uVar3;
      if ((3 < uVar3) && (iVar10 = *(int *)(param_1 + 0x200) - uVar3, 0 < iVar10)) {
        iVar11 = *(int *)(param_1 + 0x21c);
        *(int *)(param_1 + 0x208) = iVar10 + -1;
        iVar10 = *(int *)(param_1 + 0x20c);
        piVar7[8] = iVar10;
        *(int *)(param_1 + 0x21c) = iVar11 + 1;
        piVar7[3] = iVar11;
        iVar10 = iVar10 - uVar3;
        *piVar7 = iVar10;
        if (iVar10 < 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("st->pktin->length >= 0","ssh.c",0x74f,"ssh2_rdpkt");
        }
        if (*(int *)(param_1 + 0x8c) != 0) {
          iVar8 = (**(code **)(*(int *)(param_1 + 0x8c) + 0x1c))
                            (*(undefined4 *)(param_1 + 0x94),iVar8 + 5,iVar10 + -5,&local_2c,
                             &local_28);
          if (iVar8 == 0) {
            piVar7 = *(int **)(param_1 + 0x220);
            iVar10 = *piVar7;
          }
          else {
            piVar7 = *(int **)(param_1 + 0x220);
            iVar8 = local_28 + 5;
            iVar10 = piVar7[4];
            if (piVar7[7] <= (int)(local_28 + 4)) {
              piVar7[7] = iVar8;
              iVar8 = FUN_0002eb80(iVar10,iVar8,1);
              piVar7[4] = iVar8;
              piVar7 = *(int **)(param_1 + 0x220);
              iVar8 = local_28 + 5;
              iVar10 = piVar7[4];
            }
            *piVar7 = iVar8;
            memcpy((void *)(iVar10 + 5),local_2c,local_28);
            FUN_0002f010(local_2c);
            piVar7 = *(int **)(param_1 + 0x220);
            iVar10 = *piVar7;
          }
        }
        if (iVar10 < 6) {
          FUN_00049f80(param_1,piVar7);
          piVar7 = (int *)0x0;
          *(undefined4 *)(param_1 + 0x1b4) = 0;
          goto LAB_0004a01e;
        }
        bVar1 = *(byte *)(piVar7[4] + 5);
        *piVar7 = iVar10 + -6;
        iVar8 = *(int *)(param_1 + 0x18);
        piVar7[5] = piVar7[4] + 6;
        piVar7[2] = (uint)bVar1;
        if (iVar8 != 0) {
          FUN_000399f0();
          piVar7 = *(int **)(param_1 + 0x220);
        }
        piVar7[6] = 0;
        goto LAB_0004a014;
      }
      pcVar4 = "Invalid padding length on received packet";
    }
    else {
      pcVar4 = "Incoming packet length field was garbled";
    }
LAB_0004a660:
    FUN_0002edf0(pcVar4);
    FUN_0003a2d0();
    iVar8 = *(int *)(param_1 + 0x220);
    FUN_0002f010(*(undefined4 *)(iVar8 + 0x10));
    FUN_0002f010(iVar8);
    piVar7 = (int *)0x0;
    *(undefined4 *)(param_1 + 0x1b4) = 0;
  }
  else {
    if (iVar8 < 0x6b3) {
      if (iVar8 == 0x67c) goto LAB_0004a4f0;
      if (iVar8 == 0x68d) goto LAB_0004a580;
      if (iVar8 == 0) {
        puVar5 = (undefined4 *)FUN_0002e780(1,0x2c);
        puVar5[4] = 0;
        puVar5[5] = 0;
        puVar5[7] = 0;
        *(undefined4 **)(param_1 + 0x220) = puVar5;
        puVar5[2] = 0;
        *puVar5 = 0;
        iVar8 = *(int *)(param_1 + 100);
        if ((iVar8 == 0) ||
           (iVar10 = *(int *)(iVar8 + 0x24), *(int *)(param_1 + 0x218) = iVar10, iVar10 < 8)) {
          *(undefined4 *)(param_1 + 0x218) = 8;
          if (*(int *)(param_1 + 0x74) == 0) goto LAB_0004a798;
          local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);
          *(int *)(param_1 + 0x210) = local_34;
          if (iVar8 != 0) goto LAB_0004a220;
LAB_0004a72c:
          if (*(int *)(param_1 + 0x7c) != 0) {
LAB_0004a239:
            uVar6 = FUN_0002e780(4,1);
            puVar5[4] = uVar6;
            *(undefined4 *)(param_1 + 0x200) = 0;
            *(undefined4 *)(param_1 + 0x214) = 0;
            goto LAB_0004a267;
          }
        }
        else {
          if (*(int *)(param_1 + 0x74) != 0) {
            local_34 = *(int *)(*(int *)(param_1 + 0x74) + 0x2c);
            *(int *)(param_1 + 0x210) = local_34;
LAB_0004a220:
            if ((*(byte *)(iVar8 + 0x30) & 1) == 0) goto LAB_0004a72c;
            if (*(int *)(param_1 + 0x7c) != 0) goto LAB_0004a239;
            uVar6 = FUN_0002e780(local_34 + 0x9000,1);
            puVar5[4] = uVar6;
            *(undefined4 *)(param_1 + 0x214) = 0;
            iVar8 = 0;
            while (iVar8 < *(int *)(param_1 + 0x210)) {
LAB_0004a4f0:
              if (*param_3 == 0) {
                *(undefined4 *)(param_1 + 0x1b4) = 0x67c;
                piVar7 = (int *)0x0;
                goto LAB_0004a01e;
              }
              puVar2 = (undefined1 *)*param_2;
              *param_2 = (int)(puVar2 + 1);
              *(undefined1 *)
               (*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) = *puVar2;
              *param_3 = *param_3 + -1;
              iVar8 = *(int *)(param_1 + 0x214) + 1;
              *(int *)(param_1 + 0x214) = iVar8;
            }
            *(undefined4 *)(param_1 + 0x20c) = 0;
            (**(code **)(*(int *)(param_1 + 0x74) + 0x14))(*(undefined4 *)(param_1 + 0x84));
            uVar3 = *(uint *)(param_1 + 0x21c);
            local_24 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                       uVar3 << 0x18;
            (**(code **)(*(int *)(param_1 + 0x74) + 0x18))
                      (*(undefined4 *)(param_1 + 0x84),&local_24,4);
            do {
              *(undefined4 *)(param_1 + 0x214) = 0;
              iVar8 = 0;
              while (iVar8 < *(int *)(param_1 + 0x218)) {
LAB_0004a580:
                if (*param_3 == 0) {
                  *(undefined4 *)(param_1 + 0x1b4) = 0x68d;
                  piVar7 = (int *)0x0;
                  goto LAB_0004a01e;
                }
                puVar2 = (undefined1 *)*param_2;
                iVar8 = *(int *)(param_1 + 0x220);
                *param_2 = (int)(puVar2 + 1);
                *(undefined1 *)
                 (*(int *)(param_1 + 0x20c) + *(int *)(iVar8 + 0x10) + *(int *)(param_1 + 0x210) +
                 *(int *)(param_1 + 0x214)) = *puVar2;
                *param_3 = *param_3 + -1;
                iVar8 = *(int *)(param_1 + 0x214) + 1;
                *(int *)(param_1 + 0x214) = iVar8;
              }
              (**(code **)(*(int *)(param_1 + 100) + 0x14))
                        (*(undefined4 *)(param_1 + 0x6c),
                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),
                         *(int *)(param_1 + 0x218));
              (**(code **)(*(int *)(param_1 + 0x74) + 0x18))
                        (*(undefined4 *)(param_1 + 0x84),
                         *(int *)(param_1 + 0x20c) + *(int *)(*(int *)(param_1 + 0x220) + 0x10),
                         *(undefined4 *)(param_1 + 0x218));
              iVar8 = *(int *)(param_1 + 0x218) + *(int *)(param_1 + 0x20c);
              *(int *)(param_1 + 0x20c) = iVar8;
              iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x20))
                                (*(undefined4 *)(param_1 + 0x84),
                                 iVar8 + *(int *)(*(int *)(param_1 + 0x220) + 0x10));
              if (iVar8 != 0) {
                uVar3 = **(uint **)(*(int *)(param_1 + 0x220) + 0x10);
                iVar8 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8
                                     | uVar3 << 0x18);
                *(int *)(param_1 + 0x200) = iVar8;
                if (iVar8 == *(int *)(param_1 + 0x20c) + -4) {
                  iVar10 = *(int *)(param_1 + 0x220);
                  iVar11 = *(int *)(param_1 + 0x20c) + *(int *)(param_1 + 0x210);
                  *(int *)(iVar10 + 0x1c) = iVar11;
                  uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar11,1,iVar8);
                  *(undefined4 *)(iVar10 + 0x10) = uVar6;
                  piVar7 = *(int **)(param_1 + 0x220);
                  iVar8 = piVar7[4];
                  goto LAB_0004a412;
                }
              }
            } while (*(uint *)(param_1 + 0x20c) < 0x9000);
            pcVar4 = "No valid incoming packet found";
            goto LAB_0004a660;
          }
LAB_0004a798:
          *(undefined4 *)(param_1 + 0x210) = 0;
        }
        uVar6 = FUN_0002e780(*(undefined4 *)(param_1 + 0x218),1);
        puVar5[4] = uVar6;
        *(undefined4 *)(param_1 + 0x200) = 0;
        *(undefined4 *)(param_1 + 0x214) = 0;
        iVar8 = 0;
        while (iVar8 < *(int *)(param_1 + 0x218)) {
LAB_0004a120:
          if (*param_3 == 0) {
            *(undefined4 *)(param_1 + 0x1b4) = 0x6fc;
            piVar7 = (int *)0x0;
            goto LAB_0004a01e;
          }
          puVar2 = (undefined1 *)*param_2;
          *param_2 = (int)(puVar2 + 1);
          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
               *puVar2;
          *param_3 = *param_3 + -1;
          iVar8 = *(int *)(param_1 + 0x214) + 1;
          *(int *)(param_1 + 0x214) = iVar8;
        }
        puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);
        if (*(int *)(param_1 + 100) != 0) {
          (**(code **)(*(int *)(param_1 + 100) + 0x14))
                    (*(undefined4 *)(param_1 + 0x6c),puVar9,*(int *)(param_1 + 0x218));
          puVar9 = *(uint **)(*(int *)(param_1 + 0x220) + 0x10);
        }
        uVar3 = *puVar9;
        uVar3 = FUN_0002e1f0(uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
                             uVar3 << 0x18);
        *(uint *)(param_1 + 0x200) = uVar3;
        if ((0x9000 < uVar3) || (iVar8 = uVar3 + 4, iVar8 % *(int *)(param_1 + 0x218) != 0)) {
          pcVar4 = "Incoming packet was garbled on decryption";
          goto LAB_0004a660;
        }
        iVar10 = *(int *)(param_1 + 0x220);
        *(int *)(param_1 + 0x20c) = iVar8;
        iVar8 = iVar8 + *(int *)(param_1 + 0x210);
        *(int *)(iVar10 + 0x1c) = iVar8;
        uVar6 = FUN_0002eb80(*(undefined4 *)(iVar10 + 0x10),iVar8,1);
        *(undefined4 *)(iVar10 + 0x10) = uVar6;
        iVar8 = *(int *)(param_1 + 0x218);
        *(int *)(param_1 + 0x214) = iVar8;
        while (iVar8 < *(int *)(param_1 + 0x210) + *(int *)(param_1 + 0x20c)) {
LAB_0004a360:
          if (*param_3 == 0) {
            *(undefined4 *)(param_1 + 0x1b4) = 0x728;
            piVar7 = (int *)0x0;
            goto LAB_0004a01e;
          }
          puVar2 = (undefined1 *)*param_2;
          *param_2 = (int)(puVar2 + 1);
          *(undefined1 *)(*(int *)(*(int *)(param_1 + 0x220) + 0x10) + *(int *)(param_1 + 0x214)) =
               *puVar2;
          *param_3 = *param_3 + -1;
          iVar8 = *(int *)(param_1 + 0x214) + 1;
          *(int *)(param_1 + 0x214) = iVar8;
        }
        piVar7 = *(int **)(param_1 + 0x220);
        iVar8 = piVar7[4];
        if (*(int *)(param_1 + 100) != 0) {
          (**(code **)(*(int *)(param_1 + 100) + 0x14))
                    (*(undefined4 *)(param_1 + 0x6c),*(int *)(param_1 + 0x218) + iVar8,
                     *(int *)(param_1 + 0x20c) - *(int *)(param_1 + 0x218));
          piVar7 = *(int **)(param_1 + 0x220);
          iVar8 = piVar7[4];
        }
        if (*(int *)(param_1 + 0x74) != 0) {
          iVar8 = (**(code **)(*(int *)(param_1 + 0x74) + 0x10))
                            (*(undefined4 *)(param_1 + 0x84),iVar8,*(int *)(param_1 + 0x200) + 4,
                             *(undefined4 *)(param_1 + 0x21c));
          if (iVar8 == 0) goto LAB_0004a92e;
          piVar7 = *(int **)(param_1 + 0x220);
          iVar8 = piVar7[4];
        }
        goto LAB_0004a412;
      }
    }
    else {
      if (iVar8 == 0x6fc) goto LAB_0004a120;
      if (iVar8 == 0x728) goto LAB_0004a360;
      if (iVar8 == 0x6de) goto LAB_0004a060;
    }
    piVar7 = *(int **)(param_1 + 0x220);
LAB_0004a014:
    *(undefined4 *)(param_1 + 0x1b4) = 0;
  }
LAB_0004a01e:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return piVar7;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000a39d0();
}

