
int der_decode_sequence_flexi(uchar *in,ulong *inlen,ltc_asn1_list **out)

{
  byte bVar1;
  byte bVar2;
  ushort uVar3;
  uint3 uVar4;
  bool bVar5;
  undefined *puVar6;
  wchar_t wVar7;
  void *pvVar8;
  ltc_asn1_list_ *plVar9;
  ltc_generalizedtime *out_00;
  ltc_utctime *out_01;
  uchar *puVar10;
  wchar_t *out_02;
  ulong *words;
  int *out_03;
  ltc_asn1_list *plVar11;
  ulong uVar12;
  ulong uVar13;
  byte *in_00;
  long lVar14;
  size_t __size;
  ulong uVar15;
  ulong uVar16;
  ulong uVar17;
  ltc_asn1_list *plVar18;
  long in_FS_OFFSET;
  ltc_asn1_list *l;
  ulong len;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (in == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);
  }
  if (inlen == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);
  }
  if (out == (ltc_asn1_list **)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);
  }
  l = (ltc_asn1_list *)0x0;
  uVar12 = *inlen;
  if (uVar12 == 0) {
    wVar7 = _new_element(&l);
    plVar11 = l;
    if (wVar7 != L'\0') {
LAB_00173b4d:
      der_sequence_free(plVar11);
      goto LAB_00173b5b;
    }
    uVar12 = *inlen;
    if (uVar12 != 0) goto LAB_001738bc;
    uVar16 = 0;
  }
  else {
LAB_001738bc:
    uVar16 = 0;
    do {
      bVar1 = *in;
      uVar13 = (ulong)bVar1;
      if (uVar12 < 2) {
        len = 0xffffffff;
LAB_00173b43:
        wVar7 = L'\a';
        plVar11 = l;
        goto LAB_00173b4d;
      }
      bVar2 = in[1];
      if ((ulong)bVar2 < 0x80) {
        len = (ulong)bVar2 + 2;
        lVar14 = 2;
      }
      else {
        uVar15 = (ulong)(bVar2 & 0x7f);
        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {
          lVar14 = 2;
          len = 0xffffffff;
        }
        else {
          lVar14 = uVar15 + 2;
          uVar17 = (ulong)in[2];
          if (uVar15 != 1) {
            uVar3 = CONCAT11(in[2],in[3]);
            uVar17 = (ulong)uVar3;
            if (uVar15 != 2) {
              uVar4 = CONCAT21(uVar3,in[4]);
              uVar17 = (ulong)uVar4;
              if (uVar15 != 3) {
                uVar17 = (ulong)CONCAT31(uVar4,in[5]);
              }
            }
          }
          len = uVar17 + lVar14;
        }
      }
      if (uVar12 < len) goto LAB_00173b43;
      wVar7 = _new_element(&l);
      uVar12 = len;
      plVar11 = l;
      puVar6 = PTR_ltc_mp_001ddec0;
      if (wVar7 != L'\0') goto LAB_00173b4d;
      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {
        if ((bVar1 & 0xc0) == 0x80) {
          l->used = (uint)bVar1;
          l->type = LTC_ASN1_CONTEXT_SPECIFIC;
          __size = len - lVar14;
          pvVar8 = calloc(1,__size);
          plVar11->data = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          memcpy(pvVar8,in + lVar14,__size);
          plVar11->size = __size;
          goto LAB_00173a10;
        }
        switch(uVar13) {
        default:
          plVar9 = l->prev;
          if (plVar9 != (ltc_asn1_list_ *)0x0) {
            l = plVar9;
            free(plVar9->next);
            l->next = (ltc_asn1_list_ *)0x0;
          }
          goto joined_r0x001740db;
        case 1:
          l->type = LTC_ASN1_BOOLEAN;
          l->size = 1;
          out_03 = (int *)calloc(1,4);
          uVar12 = *inlen;
          plVar11->data = out_03;
          wVar7 = der_decode_boolean(in,uVar12,out_03);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_boolean(&len);
          plVar11 = l;
          break;
        case 2:
          l->type = LTC_ASN1_INTEGER;
          l->size = 1;
          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);
          plVar11 = l;
          if ((wVar7 != L'\0') ||
             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))
          goto LAB_00173b4d;
          wVar7 = der_length_integer(l->data,&len);
          plVar11 = l;
          break;
        case 3:
          l->type = LTC_ASN1_BIT_STRING;
          l->size = len * 8;
          puVar10 = (uchar *)calloc(1,len * 8);
          plVar11->data = puVar10;
          if (puVar10 == (uchar *)0x0) goto LAB_00174142;
          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_bit_string(l->size,&len);
          plVar11 = l;
          break;
        case 4:
          l->type = LTC_ASN1_OCTET_STRING;
          l->size = len;
          puVar10 = (uchar *)calloc(1,len);
          plVar11->data = puVar10;
          if (puVar10 == (uchar *)0x0) goto LAB_00174142;
          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_octet_string(l->size,&len);
          plVar11 = l;
          break;
        case 5:
          if ((*in == 5) && (in[1] == 0)) {
            l->type = LTC_ASN1_NULL;
            l->data = (void *)0x0;
            l->size = 0;
            len = 2;
            uVar12 = 2;
            goto LAB_00173a10;
          }
          wVar7 = L'\a';
          goto LAB_00173b4d;
        case 6:
          l->type = LTC_ASN1_OBJECT_IDENTIFIER;
          l->size = len;
          words = (ulong *)calloc(len,8);
          plVar11->data = words;
          if (words == (ulong *)0x0) goto LAB_00174142;
          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);
          plVar11 = l;
          if ((wVar7 == L'\0') &&
             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,
             wVar7 == L'\0')) {
            pvVar8 = realloc(l->data,l->size * 8);
            uVar12 = len;
            if (pvVar8 != (void *)0x0) {
              l->data = pvVar8;
            }
            goto LAB_00173a10;
          }
          goto LAB_00173b4d;
        case 0xc:
          l->type = LTC_ASN1_UTF8_STRING;
          l->size = len;
          out_02 = (wchar_t *)calloc(4,len);
          plVar11->data = out_02;
          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;
          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);
          plVar11 = l;
          break;
        case 0x13:
          l->type = LTC_ASN1_PRINTABLE_STRING;
          l->size = len;
          puVar10 = (uchar *)calloc(1,len);
          plVar11->data = puVar10;
          if (puVar10 == (uchar *)0x0) goto LAB_00174142;
          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);
          plVar11 = l;
          break;
        case 0x14:
          l->type = LTC_ASN1_TELETEX_STRING;
          l->size = len;
          puVar10 = (uchar *)calloc(1,len);
          plVar11->data = puVar10;
          if (puVar10 == (uchar *)0x0) goto LAB_00174142;
          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);
          plVar11 = l;
          break;
        case 0x16:
          l->type = LTC_ASN1_IA5_STRING;
          l->size = len;
          puVar10 = (uchar *)calloc(1,len);
          plVar11->data = puVar10;
          if (puVar10 == (uchar *)0x0) goto LAB_00174142;
          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);
          plVar11 = l;
          break;
        case 0x17:
          l->type = LTC_ASN1_UTCTIME;
          l->size = 1;
          out_01 = (ltc_utctime *)calloc(1,0x24);
          plVar11->data = out_01;
          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;
          len = *inlen;
          wVar7 = der_decode_utctime(in,&len,out_01);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);
          plVar11 = l;
          break;
        case 0x18:
          l->type = LTC_ASN1_GENERALIZEDTIME;
          l->size = len;
          out_00 = (ltc_generalizedtime *)calloc(1,0x28);
          plVar11->data = out_00;
          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;
          wVar7 = der_decode_generalizedtime(in,&len,out_00);
          plVar11 = l;
          if (wVar7 != L'\0') goto LAB_00173b4d;
          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);
          plVar11 = l;
          break;
        case 0x20:
        case 0x30:
        case 0x31:
          if (uVar13 == 0x20) goto LAB_00173a94;
          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;
          goto LAB_00173a9b;
        }
        uVar12 = len;
        l = plVar11;
        if (wVar7 != L'\0') goto LAB_00173b4d;
      }
      else {
        l->used = (uint)bVar1;
LAB_00173a94:
        l->type = LTC_ASN1_CONSTRUCTED;
LAB_00173a9b:
        pvVar8 = malloc(len);
        plVar11->data = pvVar8;
        if (pvVar8 == (void *)0x0) {
LAB_00174142:
          wVar7 = L'\r';
          goto LAB_00173b4d;
        }
        in_00 = in + lVar14;
        memcpy(pvVar8,in,uVar12);
        plVar11->size = uVar12;
        len = uVar12 - lVar14;
        *inlen = *inlen - lVar14;
        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);
        plVar11 = l;
        if (wVar7 != L'\0') goto LAB_00173b4d;
        uVar16 = uVar16 + lVar14;
        plVar9 = l->child;
        in = in_00;
        uVar12 = len;
        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;
        plVar9->parent = l;
        uVar13 = 0;
        do {
          plVar9 = plVar9->child;
          uVar13 = uVar13 + 1;
        } while (plVar9 != (ltc_asn1_list_ *)0x0);
        if (0x1e < uVar13) {
          wVar7 = L'\x01';
          goto LAB_00173b4d;
        }
      }
LAB_00173a10:
      uVar16 = uVar16 + uVar12;
      in = in + uVar12;
      uVar12 = *inlen - uVar12;
      *inlen = uVar12;
    } while (uVar12 != 0);
joined_r0x001740db:
    if (uVar16 != 0) {
      bVar5 = false;
      plVar11 = l;
      do {
        plVar9 = plVar11->parent;
        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {
          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;
        }
        else if (plVar9 == (ltc_asn1_list_ *)0x0) {
          plVar9 = plVar11->prev;
        }
        bVar5 = true;
        plVar11 = plVar9;
      } while( true );
    }
  }
  wVar7 = L'\0';
  *out = l;
  *inlen = uVar16;
LAB_00173b5b:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return wVar7;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
LAB_00174128:
  plVar18 = l;
  if (bVar5) {
    plVar18 = plVar11;
  }
  wVar7 = L'\0';
  *out = plVar18;
  *inlen = uVar16;
  goto LAB_00173b5b;
}



int der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)

{
  byte bVar1;
  byte bVar2;
  ushort uVar3;
  uint3 uVar4;
  bool bVar5;
  undefined *puVar6;
  int iVar7;
  void *pvVar8;
  int *piVar9;
  int *piVar10;
  ulong uVar11;
  ulong uVar12;
  byte *pbVar13;
  long lVar14;
  size_t __size;
  ulong uVar15;
  ulong uVar16;
  long in_FS_OFFSET;
  int *local_50;
  ulong local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == (byte *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);
  }
  if (param_2 == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);
  }
  if (param_3 == (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);
  }
  local_50 = (int *)0x0;
  uVar11 = *param_2;
  if (uVar11 == 0) {
    iVar7 = FUN_00173800(&local_50);
    piVar10 = local_50;
    if (iVar7 != 0) {
LAB_00173b4d:
      der_sequence_free(piVar10);
      goto LAB_00173b5b;
    }
    uVar11 = *param_2;
    if (uVar11 != 0) goto LAB_001738bc;
    uVar16 = 0;
  }
  else {
LAB_001738bc:
    uVar16 = 0;
    do {
      bVar1 = *param_1;
      uVar12 = (ulong)bVar1;
      if (uVar11 < 2) {
        local_48 = 0xffffffff;
LAB_00173b43:
        iVar7 = 7;
        piVar10 = local_50;
        goto LAB_00173b4d;
      }
      bVar2 = param_1[1];
      if ((ulong)bVar2 < 0x80) {
        local_48 = (ulong)bVar2 + 2;
        lVar14 = 2;
      }
      else {
        uVar15 = (ulong)(bVar2 & 0x7f);
        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {
          lVar14 = 2;
          local_48 = 0xffffffff;
        }
        else {
          lVar14 = uVar15 + 2;
          local_48 = (ulong)param_1[2];
          if (uVar15 != 1) {
            uVar3 = CONCAT11(param_1[2],param_1[3]);
            local_48 = (ulong)uVar3;
            if (uVar15 != 2) {
              uVar4 = CONCAT21(uVar3,param_1[4]);
              local_48 = (ulong)uVar4;
              if (uVar15 != 3) {
                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);
              }
            }
          }
          local_48 = local_48 + lVar14;
        }
      }
      if (uVar11 < local_48) goto LAB_00173b43;
      iVar7 = FUN_00173800(&local_50);
      uVar11 = local_48;
      piVar10 = local_50;
      puVar6 = PTR_ltc_mp_001ddec0;
      if (iVar7 != 0) goto LAB_00173b4d;
      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {
        if ((bVar1 & 0xc0) == 0x80) {
          local_50[6] = (uint)bVar1;
          *local_50 = 0x13;
          __size = local_48 - lVar14;
          pvVar8 = calloc(1,__size);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          memcpy(pvVar8,param_1 + lVar14,__size);
          *(size_t *)(piVar10 + 4) = __size;
          goto LAB_00173a10;
        }
        switch(uVar12) {
        default:
          piVar10 = *(int **)(local_50 + 8);
          if (piVar10 != (int *)0x0) {
            local_50 = piVar10;
            free(*(void **)(piVar10 + 10));
            local_50[10] = 0;
            local_50[0xb] = 0;
          }
          goto joined_r0x001740db;
        case 1:
          *local_50 = 1;
          local_50[4] = 1;
          local_50[5] = 0;
          pvVar8 = calloc(1,4);
          uVar11 = *param_2;
          *(void **)(piVar10 + 2) = pvVar8;
          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_boolean(&local_48);
          piVar10 = local_50;
          break;
        case 2:
          *local_50 = 2;
          local_50[4] = 1;
          local_50[5] = 0;
          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);
          piVar10 = local_50;
          if ((iVar7 != 0) ||
             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),
             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;
          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);
          piVar10 = local_50;
          break;
        case 3:
          *local_50 = 4;
          *(ulong *)(local_50 + 4) = local_48 * 8;
          pvVar8 = calloc(1,local_48 * 8);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 4:
          *local_50 = 5;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 5:
          if ((*param_1 == 5) && (param_1[1] == 0)) {
            *local_50 = 6;
            local_50[2] = 0;
            local_50[3] = 0;
            local_50[4] = 0;
            local_50[5] = 0;
            local_48 = 2;
            uVar11 = 2;
            goto LAB_00173a10;
          }
          iVar7 = 7;
          goto LAB_00173b4d;
        case 6:
          *local_50 = 7;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(local_48,8);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if ((iVar7 == 0) &&
             (iVar7 = der_length_object_identifier
                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),
                                 &local_48), piVar10 = local_50, iVar7 == 0)) {
            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);
            uVar11 = local_48;
            if (pvVar8 != (void *)0x0) {
              *(void **)(local_50 + 2) = pvVar8;
            }
            goto LAB_00173a10;
          }
          goto LAB_00173b4d;
        case 0xc:
          *local_50 = 10;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(4,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_utf8_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x13:
          *local_50 = 9;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_printable_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x14:
          *local_50 = 0x11;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_teletex_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x16:
          *local_50 = 8;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_ia5_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x17:
          *local_50 = 0xb;
          local_50[4] = 1;
          local_50[5] = 0;
          pvVar8 = calloc(1,0x24);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          local_48 = *param_2;
          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);
          piVar10 = local_50;
          break;
        case 0x18:
          *local_50 = 0x14;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,0x28);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);
          piVar10 = local_50;
          break;
        case 0x20:
        case 0x30:
        case 0x31:
          if (uVar12 == 0x20) goto LAB_00173a94;
          *local_50 = (uVar12 != 0x30) + 0xd;
          goto LAB_00173a9b;
        }
        uVar11 = local_48;
        local_50 = piVar10;
        if (iVar7 != 0) goto LAB_00173b4d;
      }
      else {
        local_50[6] = (uint)bVar1;
LAB_00173a94:
        *local_50 = 0x12;
LAB_00173a9b:
        pvVar8 = malloc(local_48);
        *(void **)(piVar10 + 2) = pvVar8;
        if (pvVar8 == (void *)0x0) {
LAB_00174142:
          iVar7 = 0xd;
          goto LAB_00173b4d;
        }
        pbVar13 = param_1 + lVar14;
        memcpy(pvVar8,param_1,uVar11);
        *(ulong *)(piVar10 + 4) = uVar11;
        local_48 = uVar11 - lVar14;
        *param_2 = *param_2 - lVar14;
        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);
        piVar10 = local_50;
        if (iVar7 != 0) goto LAB_00173b4d;
        uVar16 = uVar16 + lVar14;
        lVar14 = *(long *)(local_50 + 0xc);
        param_1 = pbVar13;
        uVar11 = local_48;
        if (lVar14 == 0) goto LAB_00173a10;
        *(int **)(lVar14 + 0x38) = local_50;
        uVar12 = 0;
        do {
          lVar14 = *(long *)(lVar14 + 0x30);
          uVar12 = uVar12 + 1;
        } while (lVar14 != 0);
        if (0x1e < uVar12) {
          iVar7 = 1;
          goto LAB_00173b4d;
        }
      }
LAB_00173a10:
      uVar16 = uVar16 + uVar11;
      param_1 = param_1 + uVar11;
      uVar11 = *param_2 - uVar11;
      *param_2 = uVar11;
    } while (uVar11 != 0);
joined_r0x001740db:
    if (uVar16 != 0) {
      bVar5 = false;
      piVar10 = local_50;
      do {
        piVar9 = *(int **)(piVar10 + 0xe);
        if (*(int **)(piVar10 + 8) == (int *)0x0) {
          if (piVar9 == (int *)0x0) goto LAB_00174128;
        }
        else if (piVar9 == (int *)0x0) {
          piVar9 = *(int **)(piVar10 + 8);
        }
        bVar5 = true;
        piVar10 = piVar9;
      } while( true );
    }
  }
  iVar7 = 0;
  *param_3 = local_50;
  *param_2 = uVar16;
LAB_00173b5b:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar7;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
LAB_00174128:
  piVar9 = local_50;
  if (bVar5) {
    piVar9 = piVar10;
  }
  iVar7 = 0;
  *param_3 = piVar9;
  *param_2 = uVar16;
  goto LAB_00173b5b;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x48
MOV qword ptr [RSP + 0x18],RDX
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x38],RAX
XOR EAX,EAX
TEST RDI,RDI
JZ 0x00174178
MOV R12,RSI
TEST RSI,RSI
JZ 0x00174160
CMP qword ptr [RSP + 0x18],0x0
JZ 0x00174195
MOV qword ptr [RSP + 0x28],0x0
MOV RDX,qword ptr [RSI]
MOV RBX,RDI
TEST RDX,RDX
JZ 0x001740e8
LEA RAX,[RSP + 0x28]
LEA RCX,[RSP + 0x30]
XOR R13D,R13D
MOV qword ptr [RSP + 0x8],RAX
MOV qword ptr [RSP + 0x10],RCX
NOP dword ptr [RAX + RAX*0x1]
MOVZX ESI,byte ptr [RBX]
MOV R14,RSI
CMP RDX,0x1
JBE 0x00173b38
MOVZX R15D,byte ptr [RBX + 0x1]
MOV R8,R15
CMP R15,0x7f
JBE 0x00173a70
AND R8D,0x7f
LEA RBP,[RDX + -0x2]
LEA RDI,[R8 + -0x1]
CMP R8,RBP
JA 0x00173a80
CMP RDI,0x3
JA 0x00173a80
LEA RBP,[R8 + 0x2]
MOVZX R15D,byte ptr [RBX + 0x2]
TEST RDI,RDI
JZ 0x00173957
MOVZX R9D,byte ptr [RBX + 0x3]
SHL R15,0x8
OR R15,R9
CMP R8,0x2
JZ 0x00173957
MOVZX R10D,byte ptr [RBX + 0x4]
SHL R15,0x8
OR R15,R10
CMP R8,0x3
JZ 0x00173957
MOVZX R11D,byte ptr [RBX + 0x5]
SHL R15,0x8
OR R15,R11
ADD R15,RBP
MOV qword ptr [RSP + 0x30],R15
CMP R15,RDX
JA 0x00173b43
MOV RDI,qword ptr [RSP + 0x8]
MOV qword ptr [RSP],RSI
CALL 0x00173800
MOV R15,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP]
TEST EAX,EAX
JNZ 0x00173b4d
TEST R14B,0x20
JZ 0x0017399b
LEA RAX,[RDX + -0x30]
CMP RAX,0x1
JA 0x00173a90
MOV ECX,R14D
AND ECX,0xffffffc0
CMP CL,0x80
JZ 0x001739c8
CMP R14B,0x31
JA 0x001740b0
LEA RSI,[0x1c38d0]
MOVSXD R14,dword ptr [RSI + RDX*0x4]
ADD R14,RSI
JMP R14
MOV dword ptr [R15 + 0x18],R14D
MOV R14,qword ptr [RSP + 0x30]
MOV EDI,0x1
MOV dword ptr [R15],0x13
MOV RSI,R14
SUB RSI,RBP
MOV qword ptr [RSP],RSI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
LEA RSI,[RBX + RBP*0x1]
MOV RBP,qword ptr [RSP]
MOV RDI,RAX
MOV RDX,RBP
CALL 0x00113f70
MOV qword ptr [R15 + 0x10],RBP
MOV RDX,qword ptr [R12]
ADD R13,R14
ADD RBX,R14
SUB RDX,R14
MOV qword ptr [R12],RDX
JNZ 0x001738d8
MOV R15,qword ptr [RSP + 0x28]
TEST R13,R13
JZ 0x00174110
MOV RCX,R15
XOR R8D,R8D
JMP 0x00173a50
TEST R9,R9
MOV RCX,R9
CMOVZ RCX,RDI
MOV R8D,0x1
MOV RDI,qword ptr [RCX + 0x20]
MOV R9,qword ptr [RCX + 0x38]
TEST RDI,RDI
JNZ 0x00173a40
TEST R9,R9
JZ 0x00174128
MOV RCX,R9
JMP 0x00173a4a
ADD R15,0x2
MOV EBP,0x2
JMP 0x0017395a
MOV EBP,0x2
MOV R15D,0xffffffff
JMP 0x0017395a
MOV dword ptr [R15 + 0x18],R14D
MOV dword ptr [R15],0x12
MOV R14,qword ptr [RSP + 0x30]
MOV RDI,R14
CALL 0x001141b0
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RDX,R14
MOV RSI,RBX
MOV RDI,RAX
ADD RBX,RBP
CALL 0x00113f70
MOV qword ptr [R15 + 0x10],R14
LEA RDX,[R15 + 0x30]
SUB R14,RBP
SUB qword ptr [R12],RBP
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,RBX
MOV qword ptr [RSP + 0x30],R14
CALL 0x00173860
TEST EAX,EAX
JNZ 0x00173c08
MOV R15,qword ptr [RSP + 0x28]
ADD R13,RBP
MOV RAX,qword ptr [R15 + 0x30]
TEST RAX,RAX
JZ 0x00173b27
MOV qword ptr [RAX + 0x38],R15
XOR EDX,EDX
NOP word ptr CS:[RAX + RAX*0x1]
MOV RAX,qword ptr [RAX + 0x30]
ADD RDX,0x1
TEST RAX,RAX
JNZ 0x00173b10
CMP RDX,0x1e
JA 0x0017414c
MOV R14,qword ptr [RSP + 0x30]
JMP 0x00173a10
MOV R12D,0xffffffff
MOV qword ptr [RSP + 0x30],R12
MOV R15,qword ptr [RSP + 0x28]
MOV EAX,0x7
MOV RDI,R15
MOV dword ptr [RSP],EAX
CALL 0x00113980
MOV EAX,dword ptr [RSP]
MOV RBX,qword ptr [RSP + 0x38]
XOR RBX,qword ptr FS:[0x28]
JNZ 0x00174190
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP RDX,0x20
JZ 0x00173a94
XOR R8D,R8D
CMP RDX,0x30
SETNZ R8B
ADD R8D,0xd
MOV dword ptr [R15],R8D
JMP 0x00173a9b
MOV RDI,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0x14
MOV ESI,0x28
MOV qword ptr [R15 + 0x10],RDI
MOV EDI,0x1
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [RSP + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x00114aa0
TEST EAX,EAX
JNZ 0x00173c08
MOV R9,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [R9 + 0x8]
CALL 0x00114ce0
TEST EAX,EAX
JZ 0x00173b27
NOP dword ptr [RAX + RAX*0x1]
MOV R15,qword ptr [RSP + 0x28]
JMP 0x00173b4d
MOV dword ptr [R15],0xb
MOV ESI,0x24
MOV EDI,0x1
MOV qword ptr [R15 + 0x10],0x1
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV R10,qword ptr [R12]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDX,RAX
MOV RDI,RBX
MOV qword ptr [RSP + 0x30],R10
CALL 0x00113af0
TEST EAX,EAX
JNZ 0x00173c08
MOV R11,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [R11 + 0x8]
CALL 0x001130d0
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV RSI,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0x8
MOV EDI,0x1
MOV qword ptr [R15 + 0x10],RSI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [R12]
LEA RCX,[R15 + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x00114a30
TEST EAX,EAX
JNZ 0x00173c08
MOV RBP,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RBP + 0x10]
MOV RDI,qword ptr [RBP + 0x8]
CALL 0x00114170
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV RSI,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0x11
MOV EDI,0x1
MOV qword ptr [R15 + 0x10],RSI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [R12]
LEA RCX,[R15 + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x00113c60
TEST EAX,EAX
JNZ 0x00173c08
MOV R15,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [R15 + 0x10]
MOV RDI,qword ptr [R15 + 0x8]
CALL 0x00114e60
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV RSI,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0x9
MOV EDI,0x1
MOV qword ptr [R15 + 0x10],RSI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [R12]
LEA RCX,[R15 + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x00113600
TEST EAX,EAX
JNZ 0x00173c08
MOV RDX,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [RDX + 0x10]
MOV RDI,qword ptr [RDX + 0x8]
MOV RDX,qword ptr [RSP + 0x10]
CALL 0x00114550
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV RSI,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0xa
MOV EDI,0x4
MOV qword ptr [R15 + 0x10],RSI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [R12]
LEA RCX,[R15 + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x001133b0
TEST EAX,EAX
JNZ 0x00173c08
MOV RAX,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RAX + 0x10]
MOV RDI,qword ptr [RAX + 0x8]
CALL 0x001131f0
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV RDI,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0x7
MOV ESI,0x8
MOV qword ptr [R15 + 0x10],RDI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [R12]
LEA RCX,[R15 + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x001142f0
TEST EAX,EAX
JNZ 0x00173c08
MOV RCX,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,qword ptr [RCX + 0x10]
MOV RDI,qword ptr [RCX + 0x8]
CALL 0x00113a50
TEST EAX,EAX
JNZ 0x00173c08
MOV R14,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [R14 + 0x10]
MOV RDI,qword ptr [R14 + 0x8]
LEA RSI,[RSI*0x8]
CALL 0x00114560
TEST RAX,RAX
JZ 0x00173b27
MOV R8,qword ptr [RSP + 0x28]
MOV R14,qword ptr [RSP + 0x30]
MOV qword ptr [R8 + 0x8],RAX
JMP 0x00173a10
CMP byte ptr [RBX],0x5
JNZ 0x00174156
CMP byte ptr [RBX + 0x1],0x0
JNZ 0x00174156
MOV dword ptr [R15],0x6
MOV R14D,0x2
MOV qword ptr [R15 + 0x8],0x0
MOV qword ptr [R15 + 0x10],0x0
MOV qword ptr [RSP + 0x30],0x2
JMP 0x00173a10
MOV RSI,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0x5
MOV EDI,0x1
MOV qword ptr [R15 + 0x10],RSI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [R12]
LEA RCX,[R15 + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x00114890
TEST EAX,EAX
JNZ 0x00173c08
MOV RDI,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RDI + 0x10]
CALL 0x00113390
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV R9,qword ptr [RSP + 0x30]
MOV dword ptr [R15],0x4
MOV EDI,0x1
LEA RSI,[R9*0x8]
MOV qword ptr [R15 + 0x10],RSI
CALL 0x00113d60
MOV qword ptr [R15 + 0x8],RAX
TEST RAX,RAX
JZ 0x00174142
MOV RSI,qword ptr [R12]
LEA RCX,[R15 + 0x10]
MOV RDX,RAX
MOV RDI,RBX
CALL 0x00113610
TEST EAX,EAX
JNZ 0x00173c08
MOV R10,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [R10 + 0x10]
CALL 0x00114e70
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV RBP,qword ptr [0x001ddec0]
MOV dword ptr [R15],0x2
LEA RDI,[R15 + 0x8]
MOV qword ptr [R15 + 0x10],0x1
CALL qword ptr [RBP + 0x10]
TEST EAX,EAX
JNZ 0x00173c08
MOV R11,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [R12]
MOV RDI,RBX
MOV RDX,qword ptr [R11 + 0x8]
CALL 0x00113d30
TEST EAX,EAX
JNZ 0x00173c08
MOV R15,qword ptr [RSP + 0x28]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [R15 + 0x8]
CALL 0x00113ab0
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV dword ptr [R15],0x1
MOV ESI,0x4
MOV EDI,0x1
MOV qword ptr [R15 + 0x10],0x1
CALL 0x00113d60
MOV RSI,qword ptr [R12]
MOV RDI,RBX
MOV qword ptr [R15 + 0x8],RAX
MOV RDX,RAX
CALL 0x00114d10
TEST EAX,EAX
JNZ 0x00173c08
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x001146b0
TEST EAX,EAX
JZ 0x00173b27
JMP 0x00173c08
MOV RBX,qword ptr [R15 + 0x20]
TEST RBX,RBX
JZ 0x00173a2c
MOV RDI,qword ptr [RBX + 0x28]
MOV qword ptr [RSP + 0x28],RBX
CALL 0x00113130
MOV R15,qword ptr [RSP + 0x28]
MOV qword ptr [R15 + 0x28],0x0
TEST R13,R13
JNZ 0x00173a35
JMP 0x00174110
LEA RDI,[RSP + 0x28]
CALL 0x00173800
TEST EAX,EAX
JNZ 0x00173c08
MOV RDX,qword ptr [R12]
TEST RDX,RDX
JNZ 0x001738bc
MOV R15,qword ptr [RSP + 0x28]
XOR R13D,R13D
NOP
MOV R10,qword ptr [RSP + 0x18]
XOR EAX,EAX
MOV qword ptr [R10],R15
MOV qword ptr [R12],R13
JMP 0x00173b5b
TEST R8B,R8B
MOV R10,qword ptr [RSP + 0x18]
CMOVNZ R15,RCX
XOR EAX,EAX
MOV qword ptr [R10],R15
MOV qword ptr [R12],R13
JMP 0x00173b5b
MOV EAX,0xd
JMP 0x00173b4d
MOV EAX,0x1
JMP 0x00173b4d
MOV EAX,0x7
JMP 0x00173b4d
MOV EDX,0x57
LEA RSI,[0x1c3898]
LEA RDI,[0x1c2d93]
CALL 0x00114270
MOV EDX,0x56
LEA RSI,[0x1c3898]
LEA RDI,[0x1a8790]
CALL 0x00114270
CALL 0x00113880
MOV EDX,0x58
LEA RSI,[0x1c3898]
LEA RDI,[0x1a87a1]
CALL 0x00114270
(translation_unit "int der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}\n\n" (function_definition "int der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}" primitive_type (function_declarator "der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)" identifier (parameter_list "(byte *param_1,ulong *param_2,undefined8 *param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "uint3 uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" identifier (argument_list "("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" if (parenthesized_expression "(param_2 == (ulong *)0x0)" ( (binary_expression "param_2 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" { comment (expression_statement "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);" (call_expression "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" identifier (argument_list "("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" ( (string_literal ""inlen != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == (undefined8 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" if (parenthesized_expression "(param_3 == (undefined8 *)0x0)" ( (binary_expression "param_3 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" { comment (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" identifier (argument_list "("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }" { (expression_statement "iVar7 = FUN_00173800(&local_50);" (assignment_expression "iVar7 = FUN_00173800(&local_50)" identifier = (call_expression "FUN_00173800(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }" { (labeled_statement "LAB_00173b4d:\n      der_sequence_free(piVar10);" statement_identifier : (expression_statement "der_sequence_free(piVar10);" (call_expression "der_sequence_free(piVar10)" identifier (argument_list "(piVar10)" ( identifier ))) ;)) (goto_statement "goto LAB_00173b5b;" goto statement_identifier ;) })) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar11 != 0) goto LAB_001738bc;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001738bc;" goto statement_identifier ;)) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" else (compound_statement "{\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" { (labeled_statement "LAB_001738bc:\n    uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (do_statement "do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);" do (compound_statement "{\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    }" { (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar12 = (ulong)bVar1;" (assignment_expression "uVar12 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }" if (parenthesized_expression "(uVar11 < 2)" ( (binary_expression "uVar11 < 2" identifier < number_literal) )) (compound_statement "{\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }" { (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00173b43:\n        iVar7 = 7;" statement_identifier : (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" identifier = number_literal) ;)) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) (expression_statement "bVar2 = param_1[1];" (assignment_expression "bVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" if (parenthesized_expression "((ulong)bVar2 < 0x80)" ( (binary_expression "(ulong)bVar2 < 0x80" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }" { (expression_statement "local_48 = (ulong)bVar2 + 2;" (assignment_expression "local_48 = (ulong)bVar2 + 2" identifier = (binary_expression "(ulong)bVar2 + 2" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" else (compound_statement "{\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" { (expression_statement "uVar15 = (ulong)(bVar2 & 0x7f);" (assignment_expression "uVar15 = (ulong)(bVar2 & 0x7f)" identifier = (call_expression "(ulong)(bVar2 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 0x7f)" ( (binary_expression "bVar2 & 0x7f" identifier & number_literal) )))) ;) (if_statement "if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" if (parenthesized_expression "((uVar11 - 2 < uVar15) || (3 < uVar15 - 1))" ( (binary_expression "(uVar11 - 2 < uVar15) || (3 < uVar15 - 1)" (parenthesized_expression "(uVar11 - 2 < uVar15)" ( (binary_expression "uVar11 - 2 < uVar15" (binary_expression "uVar11 - 2" identifier - number_literal) < identifier) )) || (parenthesized_expression "(3 < uVar15 - 1)" ( (binary_expression "3 < uVar15 - 1" number_literal < (binary_expression "uVar15 - 1" identifier - number_literal)) ))) )) (compound_statement "{\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }" { (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" identifier = number_literal) ;) (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" else (compound_statement "{\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" { (expression_statement "lVar14 = uVar15 + 2;" (assignment_expression "lVar14 = uVar15 + 2" identifier = (binary_expression "uVar15 + 2" identifier + number_literal)) ;) (expression_statement "local_48 = (ulong)param_1[2];" (assignment_expression "local_48 = (ulong)param_1[2]" identifier = (cast_expression "(ulong)param_1[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }" if (parenthesized_expression "(uVar15 != 1)" ( (binary_expression "uVar15 != 1" identifier != number_literal) )) (compound_statement "{\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }" { (expression_statement "uVar3 = CONCAT11(param_1[2],param_1[3]);" (assignment_expression "uVar3 = CONCAT11(param_1[2],param_1[3])" identifier = (call_expression "CONCAT11(param_1[2],param_1[3])" identifier (argument_list "(param_1[2],param_1[3])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , (subscript_expression "param_1[3]" identifier [ number_literal ]) )))) ;) (expression_statement "local_48 = (ulong)uVar3;" (assignment_expression "local_48 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }" if (parenthesized_expression "(uVar15 != 2)" ( (binary_expression "uVar15 != 2" identifier != number_literal) )) (compound_statement "{\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }" { (expression_statement "uVar4 = CONCAT21(uVar3,param_1[4]);" (assignment_expression "uVar4 = CONCAT21(uVar3,param_1[4])" identifier = (call_expression "CONCAT21(uVar3,param_1[4])" identifier (argument_list "(uVar3,param_1[4])" ( identifier , (subscript_expression "param_1[4]" identifier [ number_literal ]) )))) ;) (expression_statement "local_48 = (ulong)uVar4;" (assignment_expression "local_48 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }" if (parenthesized_expression "(uVar15 != 3)" ( (binary_expression "uVar15 != 3" identifier != number_literal) )) (compound_statement "{\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }" { (expression_statement "local_48 = (ulong)CONCAT31(uVar4,param_1[5]);" (assignment_expression "local_48 = (ulong)CONCAT31(uVar4,param_1[5])" identifier = (cast_expression "(ulong)CONCAT31(uVar4,param_1[5])" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CONCAT31(uVar4,param_1[5])" identifier (argument_list "(uVar4,param_1[5])" ( identifier , (subscript_expression "param_1[5]" identifier [ number_literal ]) ))))) ;) })) })) })) (expression_statement "local_48 = local_48 + lVar14;" (assignment_expression "local_48 = local_48 + lVar14" identifier = (binary_expression "local_48 + lVar14" identifier + identifier)) ;) }))) }))) (if_statement "if (uVar11 < local_48) goto LAB_00173b43;" if (parenthesized_expression "(uVar11 < local_48)" ( (binary_expression "uVar11 < local_48" identifier < identifier) )) (goto_statement "goto LAB_00173b43;" goto statement_identifier ;)) (expression_statement "iVar7 = FUN_00173800(&local_50);" (assignment_expression "iVar7 = FUN_00173800(&local_50)" identifier = (call_expression "FUN_00173800(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) )))) ;) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (expression_statement "puVar6 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar6 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (if_statement "if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" if (parenthesized_expression "(((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2))" ( (binary_expression "((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)" (parenthesized_expression "((bVar1 & 0x20) == 0)" ( (binary_expression "(bVar1 & 0x20) == 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(uVar12 - 0x30 < 2)" ( (binary_expression "uVar12 - 0x30 < 2" (binary_expression "uVar12 - 0x30" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }" { (if_statement "if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }" if (parenthesized_expression "((bVar1 & 0xc0) == 0x80)" ( (binary_expression "(bVar1 & 0xc0) == 0x80" (parenthesized_expression "(bVar1 & 0xc0)" ( (binary_expression "bVar1 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }" { (expression_statement "local_50[6] = (uint)bVar1;" (assignment_expression "local_50[6] = (uint)bVar1" (subscript_expression "local_50[6]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*local_50 = 0x13;" (assignment_expression "*local_50 = 0x13" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "__size = local_48 - lVar14;" (assignment_expression "__size = local_48 - lVar14" identifier = (binary_expression "local_48 - lVar14" identifier - identifier)) ;) (expression_statement "pvVar8 = calloc(1,__size);" (assignment_expression "pvVar8 = calloc(1,__size)" identifier = (call_expression "calloc(1,__size)" identifier (argument_list "(1,__size)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "memcpy(pvVar8,param_1 + lVar14,__size);" (call_expression "memcpy(pvVar8,param_1 + lVar14,__size)" identifier (argument_list "(pvVar8,param_1 + lVar14,__size)" ( identifier , (binary_expression "param_1 + lVar14" identifier + identifier) , identifier ))) ;) (expression_statement "*(size_t *)(piVar10 + 4) = __size;" (assignment_expression "*(size_t *)(piVar10 + 4) = __size" (pointer_expression "*(size_t *)(piVar10 + 4)" * (cast_expression "(size_t *)(piVar10 + 4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 4)" ( (binary_expression "piVar10 + 4" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (switch_statement "switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }" switch (parenthesized_expression "(uVar12)" ( identifier )) (compound_statement "{\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }" { (case_statement "default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;" default : (expression_statement "piVar10 = *(int **)(local_50 + 8);" (assignment_expression "piVar10 = *(int **)(local_50 + 8)" identifier = (pointer_expression "*(int **)(local_50 + 8)" * (cast_expression "(int **)(local_50 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_50 + 8)" ( (binary_expression "local_50 + 8" identifier + number_literal) ))))) ;) (if_statement "if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }" { (expression_statement "local_50 = piVar10;" (assignment_expression "local_50 = piVar10" identifier = identifier) ;) (expression_statement "free(*(void **)(piVar10 + 10));" (call_expression "free(*(void **)(piVar10 + 10))" identifier (argument_list "(*(void **)(piVar10 + 10))" ( (pointer_expression "*(void **)(piVar10 + 10)" * (cast_expression "(void **)(piVar10 + 10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 10)" ( (binary_expression "piVar10 + 10" identifier + number_literal) )))) ))) ;) (expression_statement "local_50[10] = 0;" (assignment_expression "local_50[10] = 0" (subscript_expression "local_50[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[0xb] = 0;" (assignment_expression "local_50[0xb] = 0" (subscript_expression "local_50[0xb]" identifier [ number_literal ]) = number_literal) ;) })) (goto_statement "goto joined_r0x001740db;" goto statement_identifier ;)) (case_statement "case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 1;" (assignment_expression "*local_50 = 1" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pvVar8 = calloc(1,4);" (assignment_expression "pvVar8 = calloc(1,4)" identifier = (call_expression "calloc(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal )))) ;) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);" (assignment_expression "iVar7 = der_decode_boolean(param_1,uVar11,pvVar8)" identifier = (call_expression "der_decode_boolean(param_1,uVar11,pvVar8)" identifier (argument_list "(param_1,uVar11,pvVar8)" ( identifier , identifier , identifier )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_boolean(&local_48);" (assignment_expression "iVar7 = der_length_boolean(&local_48)" identifier = (call_expression "der_length_boolean(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 2;" (assignment_expression "*local_50 = 2" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);" (assignment_expression "iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2)" identifier = (call_expression "(**(code **)(puVar6 + 0x10))(local_50 + 2)" (parenthesized_expression "(**(code **)(puVar6 + 0x10))" ( (pointer_expression "**(code **)(puVar6 + 0x10)" * (pointer_expression "*(code **)(puVar6 + 0x10)" * (cast_expression "(code **)(puVar6 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) ))))) )) (argument_list "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;" if (parenthesized_expression "((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0))" ( (binary_expression "(iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)" ( (comma_expression "iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0" (assignment_expression "iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2))" identifier = (call_expression "der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2))" identifier (argument_list "(param_1,*param_2,*(undefined8 *)(local_50 + 2))" ( identifier , (pointer_expression "*param_2" * identifier) , (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) )))) , (comma_expression "piVar10 = local_50, iVar7 != 0" (assignment_expression "piVar10 = local_50" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48)" identifier = (call_expression "der_length_integer(*(undefined8 *)(local_50 + 2),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 4;" (assignment_expression "*local_50 = 4" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48 * 8;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48 * 8" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = (binary_expression "local_48 * 8" identifier * number_literal)) ;) (expression_statement "pvVar8 = calloc(1,local_48 * 8);" (assignment_expression "pvVar8 = calloc(1,local_48 * 8)" identifier = (call_expression "calloc(1,local_48 * 8)" identifier (argument_list "(1,local_48 * 8)" ( number_literal , (binary_expression "local_48 * 8" identifier * number_literal) )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 5;" (assignment_expression "*local_50 = 5" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;" case number_literal : (if_statement "if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }" if (parenthesized_expression "((*param_1 == 5) && (param_1[1] == 0))" ( (binary_expression "(*param_1 == 5) && (param_1[1] == 0)" (parenthesized_expression "(*param_1 == 5)" ( (binary_expression "*param_1 == 5" (pointer_expression "*param_1" * identifier) == number_literal) )) && (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }" { (expression_statement "*local_50 = 6;" (assignment_expression "*local_50 = 6" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[2] = 0;" (assignment_expression "local_50[2] = 0" (subscript_expression "local_50[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[3] = 0;" (assignment_expression "local_50[3] = 0" (subscript_expression "local_50[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[4] = 0;" (assignment_expression "local_50[4] = 0" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (case_statement "case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;" case number_literal : (expression_statement "*local_50 = 7;" (assignment_expression "*local_50 = 7" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(local_48,8);" (assignment_expression "pvVar8 = calloc(local_48,8)" identifier = (call_expression "calloc(local_48,8)" identifier (argument_list "(local_48,8)" ( identifier , number_literal )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" if (parenthesized_expression "((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0))" ( (binary_expression "(iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)" ( (comma_expression "iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0" (assignment_expression "iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" identifier = (call_expression "der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) , (comma_expression "piVar10 = local_50, iVar7 == 0" (assignment_expression "piVar10 = local_50" identifier = identifier) , (binary_expression "iVar7 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" { (expression_statement "pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);" (assignment_expression "pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" identifier = (call_expression "realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" identifier (argument_list "(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" ( (pointer_expression "*(void **)(local_50 + 2)" * (cast_expression "(void **)(local_50 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (binary_expression "*(long *)(local_50 + 4) * 8" (pointer_expression "*(long *)(local_50 + 4)" * (cast_expression "(long *)(local_50 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) * number_literal) )))) ;) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (if_statement "if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }" if (parenthesized_expression "(pvVar8 != (void *)0x0)" ( (binary_expression "pvVar8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(void **)(local_50 + 2) = pvVar8;\n            }" { (expression_statement "*(void **)(local_50 + 2) = pvVar8;" (assignment_expression "*(void **)(local_50 + 2) = pvVar8" (pointer_expression "*(void **)(local_50 + 2)" * (cast_expression "(void **)(local_50 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (case_statement "case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 10;" (assignment_expression "*local_50 = 10" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(4,local_48);" (assignment_expression "pvVar8 = calloc(4,local_48)" identifier = (call_expression "calloc(4,local_48)" identifier (argument_list "(4,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 9;" (assignment_expression "*local_50 = 9" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 0x11;" (assignment_expression "*local_50 = 0x11" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 8;" (assignment_expression "*local_50 = 8" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 0xb;" (assignment_expression "*local_50 = 0xb" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pvVar8 = calloc(1,0x24);" (assignment_expression "pvVar8 = calloc(1,0x24)" identifier = (call_expression "calloc(1,0x24)" identifier (argument_list "(1,0x24)" ( number_literal , number_literal )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "local_48 = *param_2;" (assignment_expression "local_48 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);" (assignment_expression "iVar7 = der_decode_utctime(param_1,&local_48,pvVar8)" identifier = (call_expression "der_decode_utctime(param_1,&local_48,pvVar8)" identifier (argument_list "(param_1,&local_48,pvVar8)" ( identifier , (pointer_expression "&local_48" & identifier) , identifier )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48)" identifier = (call_expression "der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 0x14;" (assignment_expression "*local_50 = 0x14" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,0x28);" (assignment_expression "pvVar8 = calloc(1,0x28)" identifier = (call_expression "calloc(1,0x28)" identifier (argument_list "(1,0x28)" ( number_literal , number_literal )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);" (assignment_expression "iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8)" identifier = (call_expression "der_decode_generalizedtime(param_1,&local_48,pvVar8)" identifier (argument_list "(param_1,&local_48,pvVar8)" ( identifier , (pointer_expression "&local_48" & identifier) , identifier )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48)" identifier = (call_expression "der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x20:" case number_literal :) (case_statement "case 0x30:" case number_literal :) (case_statement "case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;" case number_literal : (if_statement "if (uVar12 == 0x20) goto LAB_00173a94;" if (parenthesized_expression "(uVar12 == 0x20)" ( (binary_expression "uVar12 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00173a94;" goto statement_identifier ;)) (expression_statement "*local_50 = (uVar12 != 0x30) + 0xd;" (assignment_expression "*local_50 = (uVar12 != 0x30) + 0xd" (pointer_expression "*local_50" * identifier) = (binary_expression "(uVar12 != 0x30) + 0xd" (parenthesized_expression "(uVar12 != 0x30)" ( (binary_expression "uVar12 != 0x30" identifier != number_literal) )) + number_literal)) ;) (goto_statement "goto LAB_00173a9b;" goto statement_identifier ;)) })) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (expression_statement "local_50 = piVar10;" (assignment_expression "local_50 = piVar10" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) }) (else_clause "else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" else (compound_statement "{\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" { (expression_statement "local_50[6] = (uint)bVar1;" (assignment_expression "local_50[6] = (uint)bVar1" (subscript_expression "local_50[6]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (labeled_statement "LAB_00173a94:\n        *local_50 = 0x12;" statement_identifier : (expression_statement "*local_50 = 0x12;" (assignment_expression "*local_50 = 0x12" (pointer_expression "*local_50" * identifier) = number_literal) ;)) (labeled_statement "LAB_00173a9b:\n        pvVar8 = malloc(local_48);" statement_identifier : (expression_statement "pvVar8 = malloc(local_48);" (assignment_expression "pvVar8 = malloc(local_48)" identifier = (call_expression "malloc(local_48)" identifier (argument_list "(local_48)" ( identifier )))) ;)) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }" { (labeled_statement "LAB_00174142:\n          iVar7 = 0xd;" statement_identifier : (expression_statement "iVar7 = 0xd;" (assignment_expression "iVar7 = 0xd" identifier = number_literal) ;)) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" identifier = (binary_expression "param_1 + lVar14" identifier + identifier)) ;) (expression_statement "memcpy(pvVar8,param_1,uVar11);" (call_expression "memcpy(pvVar8,param_1,uVar11)" identifier (argument_list "(pvVar8,param_1,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(ulong *)(piVar10 + 4) = uVar11;" (assignment_expression "*(ulong *)(piVar10 + 4) = uVar11" (pointer_expression "*(ulong *)(piVar10 + 4)" * (cast_expression "(ulong *)(piVar10 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 4)" ( (binary_expression "piVar10 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_48 = uVar11 - lVar14;" (assignment_expression "local_48 = uVar11 - lVar14" identifier = (binary_expression "uVar11 - lVar14" identifier - identifier)) ;) (expression_statement "*param_2 = *param_2 - lVar14;" (assignment_expression "*param_2 = *param_2 - lVar14" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 - lVar14" (pointer_expression "*param_2" * identifier) - identifier)) ;) (expression_statement "iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);" (assignment_expression "iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc)" identifier = (call_expression "der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc)" identifier (argument_list "(pbVar13,&local_48,piVar10 + 0xc)" ( identifier , (pointer_expression "&local_48" & identifier) , (binary_expression "piVar10 + 0xc" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "uVar16 = uVar16 + lVar14;" (assignment_expression "uVar16 = uVar16 + lVar14" identifier = (binary_expression "uVar16 + lVar14" identifier + identifier)) ;) (expression_statement "lVar14 = *(long *)(local_50 + 0xc);" (assignment_expression "lVar14 = *(long *)(local_50 + 0xc)" identifier = (pointer_expression "*(long *)(local_50 + 0xc)" * (cast_expression "(long *)(local_50 + 0xc)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0xc)" ( (binary_expression "local_50 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_1 = pbVar13;" (assignment_expression "param_1 = pbVar13" identifier = identifier) ;) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (if_statement "if (lVar14 == 0) goto LAB_00173a10;" if (parenthesized_expression "(lVar14 == 0)" ( (binary_expression "lVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;)) (expression_statement "*(int **)(lVar14 + 0x38) = local_50;" (assignment_expression "*(int **)(lVar14 + 0x38) = local_50" (pointer_expression "*(int **)(lVar14 + 0x38)" * (cast_expression "(int **)(lVar14 + 0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);" do (compound_statement "{\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        }" { (expression_statement "lVar14 = *(long *)(lVar14 + 0x30);" (assignment_expression "lVar14 = *(long *)(lVar14 + 0x30)" identifier = (pointer_expression "*(long *)(lVar14 + 0x30)" * (cast_expression "(long *)(lVar14 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x30)" ( (binary_expression "lVar14 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != 0)" ( (binary_expression "lVar14 != 0" identifier != number_literal) )) ;) (if_statement "if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }" if (parenthesized_expression "(0x1e < uVar12)" ( (binary_expression "0x1e < uVar12" number_literal < identifier) )) (compound_statement "{\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00173a10:\n      uVar16 = uVar16 + uVar11;" statement_identifier : (expression_statement "uVar16 = uVar16 + uVar11;" (assignment_expression "uVar16 = uVar16 + uVar11" identifier = (binary_expression "uVar16 + uVar11" identifier + identifier)) ;)) (expression_statement "param_1 = param_1 + uVar11;" (assignment_expression "param_1 = param_1 + uVar11" identifier = (binary_expression "param_1 + uVar11" identifier + identifier)) ;) (expression_statement "uVar11 = *param_2 - uVar11;" (assignment_expression "uVar11 = *param_2 - uVar11" identifier = (binary_expression "*param_2 - uVar11" (pointer_expression "*param_2" * identifier) - identifier)) ;) (expression_statement "*param_2 = uVar11;" (assignment_expression "*param_2 = uVar11" (pointer_expression "*param_2" * identifier) = identifier) ;) }) while (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) ;) (labeled_statement "joined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" statement_identifier : (if_statement "if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (do_statement "do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );" do (compound_statement "{\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      }" { (expression_statement "piVar9 = *(int **)(piVar10 + 0xe);" (assignment_expression "piVar9 = *(int **)(piVar10 + 0xe)" identifier = (pointer_expression "*(int **)(piVar10 + 0xe)" * (cast_expression "(int **)(piVar10 + 0xe)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 0xe)" ( (binary_expression "piVar10 + 0xe" identifier + number_literal) ))))) ;) (if_statement "if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" if (parenthesized_expression "(*(int **)(piVar10 + 8) == (int *)0x0)" ( (binary_expression "*(int **)(piVar10 + 8) == (int *)0x0" (pointer_expression "*(int **)(piVar10 + 8)" * (cast_expression "(int **)(piVar10 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 8)" ( (binary_expression "piVar10 + 8" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }" { (if_statement "if (piVar9 == (int *)0x0) goto LAB_00174128;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174128;" goto statement_identifier ;)) }) (else_clause "else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" else (if_statement "if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar9 = *(int **)(piVar10 + 8);\n        }" { (expression_statement "piVar9 = *(int **)(piVar10 + 8);" (assignment_expression "piVar9 = *(int **)(piVar10 + 8)" identifier = (pointer_expression "*(int **)(piVar10 + 8)" * (cast_expression "(int **)(piVar10 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 8)" ( (binary_expression "piVar10 + 8" identifier + number_literal) ))))) ;) })))) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = local_50;" (assignment_expression "*param_3 = local_50" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_2 = uVar16;" (assignment_expression "*param_2 = uVar16" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar7;\n  }" { (return_statement "return iVar7;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00174128:\n  piVar9 = local_50;" statement_identifier : (expression_statement "piVar9 = local_50;" (assignment_expression "piVar9 = local_50" identifier = identifier) ;)) (if_statement "if (bVar5) {\n    piVar9 = piVar10;\n  }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n    piVar9 = piVar10;\n  }" { (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) })) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = piVar9;" (assignment_expression "*param_3 = piVar9" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_2 = uVar16;" (assignment_expression "*param_2 = uVar16" (pointer_expression "*param_2" * identifier) = identifier) ;) (goto_statement "goto LAB_00173b5b;" goto statement_identifier ;) })))
(translation_unit "int der_decode_sequence_flexi(uchar *in,ulong *inlen,ltc_asn1_list **out)\n\n{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  wchar_t wVar7;\n  void *pvVar8;\n  ltc_asn1_list_ *plVar9;\n  ltc_generalizedtime *out_00;\n  ltc_utctime *out_01;\n  uchar *puVar10;\n  wchar_t *out_02;\n  ulong *words;\n  int *out_03;\n  ltc_asn1_list *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  byte *in_00;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  ulong uVar17;\n  ltc_asn1_list *plVar18;\n  long in_FS_OFFSET;\n  ltc_asn1_list *l;\n  ulong len;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (inlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (out == (ltc_asn1_list **)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  l = (ltc_asn1_list *)0x0;\n  uVar12 = *inlen;\n  if (uVar12 == 0) {\n    wVar7 = _new_element(&l);\n    plVar11 = l;\n    if (wVar7 != L'\0') {\nLAB_00173b4d:\n      der_sequence_free(plVar11);\n      goto LAB_00173b5b;\n    }\n    uVar12 = *inlen;\n    if (uVar12 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    } while (uVar12 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }\n  }\n  wVar7 = L'\0';\n  *out = l;\n  *inlen = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return wVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\nLAB_00174128:\n  plVar18 = l;\n  if (bVar5) {\n    plVar18 = plVar11;\n  }\n  wVar7 = L'\0';\n  *out = plVar18;\n  *inlen = uVar16;\n  goto LAB_00173b5b;\n}\n\n" (function_definition "int der_decode_sequence_flexi(uchar *in,ulong *inlen,ltc_asn1_list **out)\n\n{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  wchar_t wVar7;\n  void *pvVar8;\n  ltc_asn1_list_ *plVar9;\n  ltc_generalizedtime *out_00;\n  ltc_utctime *out_01;\n  uchar *puVar10;\n  wchar_t *out_02;\n  ulong *words;\n  int *out_03;\n  ltc_asn1_list *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  byte *in_00;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  ulong uVar17;\n  ltc_asn1_list *plVar18;\n  long in_FS_OFFSET;\n  ltc_asn1_list *l;\n  ulong len;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (inlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (out == (ltc_asn1_list **)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  l = (ltc_asn1_list *)0x0;\n  uVar12 = *inlen;\n  if (uVar12 == 0) {\n    wVar7 = _new_element(&l);\n    plVar11 = l;\n    if (wVar7 != L'\0') {\nLAB_00173b4d:\n      der_sequence_free(plVar11);\n      goto LAB_00173b5b;\n    }\n    uVar12 = *inlen;\n    if (uVar12 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    } while (uVar12 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }\n  }\n  wVar7 = L'\0';\n  *out = l;\n  *inlen = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return wVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\nLAB_00174128:\n  plVar18 = l;\n  if (bVar5) {\n    plVar18 = plVar11;\n  }\n  wVar7 = L'\0';\n  *out = plVar18;\n  *inlen = uVar16;\n  goto LAB_00173b5b;\n}" primitive_type (function_declarator "der_decode_sequence_flexi(uchar *in,ulong *inlen,ltc_asn1_list **out)" identifier (parameter_list "(uchar *in,ulong *inlen,ltc_asn1_list **out)" ( (parameter_declaration "uchar *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "ulong *inlen" type_identifier (pointer_declarator "*inlen" * identifier)) , (parameter_declaration "ltc_asn1_list **out" type_identifier (pointer_declarator "**out" * (pointer_declarator "*out" * identifier))) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  wchar_t wVar7;\n  void *pvVar8;\n  ltc_asn1_list_ *plVar9;\n  ltc_generalizedtime *out_00;\n  ltc_utctime *out_01;\n  uchar *puVar10;\n  wchar_t *out_02;\n  ulong *words;\n  int *out_03;\n  ltc_asn1_list *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  byte *in_00;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  ulong uVar17;\n  ltc_asn1_list *plVar18;\n  long in_FS_OFFSET;\n  ltc_asn1_list *l;\n  ulong len;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (inlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (out == (ltc_asn1_list **)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  l = (ltc_asn1_list *)0x0;\n  uVar12 = *inlen;\n  if (uVar12 == 0) {\n    wVar7 = _new_element(&l);\n    plVar11 = l;\n    if (wVar7 != L'\0') {\nLAB_00173b4d:\n      der_sequence_free(plVar11);\n      goto LAB_00173b5b;\n    }\n    uVar12 = *inlen;\n    if (uVar12 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    } while (uVar12 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }\n  }\n  wVar7 = L'\0';\n  *out = l;\n  *inlen = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return wVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\nLAB_00174128:\n  plVar18 = l;\n  if (bVar5) {\n    plVar18 = plVar11;\n  }\n  wVar7 = L'\0';\n  *out = plVar18;\n  *inlen = uVar16;\n  goto LAB_00173b5b;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "uint3 uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "wchar_t wVar7;" type_identifier identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (declaration "ltc_asn1_list_ *plVar9;" type_identifier (pointer_declarator "*plVar9" * identifier) ;) (declaration "ltc_generalizedtime *out_00;" type_identifier (pointer_declarator "*out_00" * identifier) ;) (declaration "ltc_utctime *out_01;" type_identifier (pointer_declarator "*out_01" * identifier) ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "wchar_t *out_02;" type_identifier (pointer_declarator "*out_02" * identifier) ;) (declaration "ulong *words;" type_identifier (pointer_declarator "*words" * identifier) ;) (declaration "int *out_03;" primitive_type (pointer_declarator "*out_03" * identifier) ;) (declaration "ltc_asn1_list *plVar11;" type_identifier (pointer_declarator "*plVar11" * identifier) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "byte *in_00;" type_identifier (pointer_declarator "*in_00" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "ltc_asn1_list *plVar18;" type_identifier (pointer_declarator "*plVar18" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "ltc_asn1_list *l;" type_identifier (pointer_declarator "*l" * identifier) ;) (declaration "ulong len;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" if (parenthesized_expression "(in == (uchar *)0x0)" ( (binary_expression "in == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" identifier (argument_list "("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (inlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" if (parenthesized_expression "(inlen == (ulong *)0x0)" ( (binary_expression "inlen == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" { comment (expression_statement "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);" (call_expression "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" identifier (argument_list "("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" ( (string_literal ""inlen != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (out == (ltc_asn1_list **)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" if (parenthesized_expression "(out == (ltc_asn1_list **)0x0)" ( (binary_expression "out == (ltc_asn1_list **)0x0" identifier == (cast_expression "(ltc_asn1_list **)0x0" ( (type_descriptor "ltc_asn1_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" { comment (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" identifier (argument_list "("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "l = (ltc_asn1_list *)0x0;" (assignment_expression "l = (ltc_asn1_list *)0x0" identifier = (cast_expression "(ltc_asn1_list *)0x0" ( (type_descriptor "ltc_asn1_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar12 = *inlen;" (assignment_expression "uVar12 = *inlen" identifier = (pointer_expression "*inlen" * identifier)) ;) (if_statement "if (uVar12 == 0) {\n    wVar7 = _new_element(&l);\n    plVar11 = l;\n    if (wVar7 != L'\0') {\nLAB_00173b4d:\n      der_sequence_free(plVar11);\n      goto LAB_00173b5b;\n    }\n    uVar12 = *inlen;\n    if (uVar12 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    } while (uVar12 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }\n  }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    wVar7 = _new_element(&l);\n    plVar11 = l;\n    if (wVar7 != L'\0') {\nLAB_00173b4d:\n      der_sequence_free(plVar11);\n      goto LAB_00173b5b;\n    }\n    uVar12 = *inlen;\n    if (uVar12 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }" { (expression_statement "wVar7 = _new_element(&l);" (assignment_expression "wVar7 = _new_element(&l)" identifier = (call_expression "_new_element(&l)" identifier (argument_list "(&l)" ( (pointer_expression "&l" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') {\nLAB_00173b4d:\n      der_sequence_free(plVar11);\n      goto LAB_00173b5b;\n    }" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\nLAB_00173b4d:\n      der_sequence_free(plVar11);\n      goto LAB_00173b5b;\n    }" { (labeled_statement "LAB_00173b4d:\n      der_sequence_free(plVar11);" statement_identifier : (expression_statement "der_sequence_free(plVar11);" (call_expression "der_sequence_free(plVar11)" identifier (argument_list "(plVar11)" ( identifier ))) ;)) (goto_statement "goto LAB_00173b5b;" goto statement_identifier ;) })) (expression_statement "uVar12 = *inlen;" (assignment_expression "uVar12 = *inlen" identifier = (pointer_expression "*inlen" * identifier)) ;) (if_statement "if (uVar12 != 0) goto LAB_001738bc;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001738bc;" goto statement_identifier ;)) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    } while (uVar12 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }\n  }" else (compound_statement "{\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    } while (uVar12 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }\n  }" { (labeled_statement "LAB_001738bc:\n    uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (do_statement "do {\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    } while (uVar12 != 0);" do (compound_statement "{\n      bVar1 = *in;\n      uVar13 = (ulong)bVar1;\n      if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }\n      bVar2 = in[1];\n      if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }\n      if (uVar12 < len) goto LAB_00173b43;\n      wVar7 = _new_element(&l);\n      uVar12 = len;\n      plVar11 = l;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (wVar7 != L'\0') goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar12;\n      in = in + uVar12;\n      uVar12 = *inlen - uVar12;\n      *inlen = uVar12;\n    }" { (expression_statement "bVar1 = *in;" (assignment_expression "bVar1 = *in" identifier = (pointer_expression "*in" * identifier)) ;) (expression_statement "uVar13 = (ulong)bVar1;" (assignment_expression "uVar13 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar12 < 2) {\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }" if (parenthesized_expression "(uVar12 < 2)" ( (binary_expression "uVar12 < 2" identifier < number_literal) )) (compound_statement "{\n        len = 0xffffffff;\nLAB_00173b43:\n        wVar7 = L'\a';\n        plVar11 = l;\n        goto LAB_00173b4d;\n      }" { (expression_statement "len = 0xffffffff;" (assignment_expression "len = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00173b43:\n        wVar7 = L'\a';" statement_identifier : (expression_statement "wVar7 = L'\a';" (assignment_expression "wVar7 = L'\a'" identifier = (char_literal "L'\a'" L' escape_sequence ')) ;)) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) (expression_statement "bVar2 = in[1];" (assignment_expression "bVar2 = in[1]" identifier = (subscript_expression "in[1]" identifier [ number_literal ])) ;) (if_statement "if ((ulong)bVar2 < 0x80) {\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }" if (parenthesized_expression "((ulong)bVar2 < 0x80)" ( (binary_expression "(ulong)bVar2 < 0x80" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        len = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }" { (expression_statement "len = (ulong)bVar2 + 2;" (assignment_expression "len = (ulong)bVar2 + 2" identifier = (binary_expression "(ulong)bVar2 + 2" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }" else (compound_statement "{\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }\n      }" { (expression_statement "uVar15 = (ulong)(bVar2 & 0x7f);" (assignment_expression "uVar15 = (ulong)(bVar2 & 0x7f)" identifier = (call_expression "(ulong)(bVar2 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 0x7f)" ( (binary_expression "bVar2 & 0x7f" identifier & number_literal) )))) ;) (if_statement "if ((uVar12 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          len = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }" if (parenthesized_expression "((uVar12 - 2 < uVar15) || (3 < uVar15 - 1))" ( (binary_expression "(uVar12 - 2 < uVar15) || (3 < uVar15 - 1)" (parenthesized_expression "(uVar12 - 2 < uVar15)" ( (binary_expression "uVar12 - 2 < uVar15" (binary_expression "uVar12 - 2" identifier - number_literal) < identifier) )) || (parenthesized_expression "(3 < uVar15 - 1)" ( (binary_expression "3 < uVar15 - 1" number_literal < (binary_expression "uVar15 - 1" identifier - number_literal)) ))) )) (compound_statement "{\n          lVar14 = 2;\n          len = 0xffffffff;\n        }" { (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" identifier = number_literal) ;) (expression_statement "len = 0xffffffff;" (assignment_expression "len = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }" else (compound_statement "{\n          lVar14 = uVar15 + 2;\n          uVar17 = (ulong)in[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }\n          len = uVar17 + lVar14;\n        }" { (expression_statement "lVar14 = uVar15 + 2;" (assignment_expression "lVar14 = uVar15 + 2" identifier = (binary_expression "uVar15 + 2" identifier + number_literal)) ;) (expression_statement "uVar17 = (ulong)in[2];" (assignment_expression "uVar17 = (ulong)in[2]" identifier = (cast_expression "(ulong)in[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "in[2]" identifier [ number_literal ]))) ;) (if_statement "if (uVar15 != 1) {\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }" if (parenthesized_expression "(uVar15 != 1)" ( (binary_expression "uVar15 != 1" identifier != number_literal) )) (compound_statement "{\n            uVar3 = CONCAT11(in[2],in[3]);\n            uVar17 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }\n          }" { (expression_statement "uVar3 = CONCAT11(in[2],in[3]);" (assignment_expression "uVar3 = CONCAT11(in[2],in[3])" identifier = (call_expression "CONCAT11(in[2],in[3])" identifier (argument_list "(in[2],in[3])" ( (subscript_expression "in[2]" identifier [ number_literal ]) , (subscript_expression "in[3]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar17 = (ulong)uVar3;" (assignment_expression "uVar17 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }" if (parenthesized_expression "(uVar15 != 2)" ( (binary_expression "uVar15 != 2" identifier != number_literal) )) (compound_statement "{\n              uVar4 = CONCAT21(uVar3,in[4]);\n              uVar17 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }\n            }" { (expression_statement "uVar4 = CONCAT21(uVar3,in[4]);" (assignment_expression "uVar4 = CONCAT21(uVar3,in[4])" identifier = (call_expression "CONCAT21(uVar3,in[4])" identifier (argument_list "(uVar3,in[4])" ( identifier , (subscript_expression "in[4]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar17 = (ulong)uVar4;" (assignment_expression "uVar17 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 3) {\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }" if (parenthesized_expression "(uVar15 != 3)" ( (binary_expression "uVar15 != 3" identifier != number_literal) )) (compound_statement "{\n                uVar17 = (ulong)CONCAT31(uVar4,in[5]);\n              }" { (expression_statement "uVar17 = (ulong)CONCAT31(uVar4,in[5]);" (assignment_expression "uVar17 = (ulong)CONCAT31(uVar4,in[5])" identifier = (cast_expression "(ulong)CONCAT31(uVar4,in[5])" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CONCAT31(uVar4,in[5])" identifier (argument_list "(uVar4,in[5])" ( identifier , (subscript_expression "in[5]" identifier [ number_literal ]) ))))) ;) })) })) })) (expression_statement "len = uVar17 + lVar14;" (assignment_expression "len = uVar17 + lVar14" identifier = (binary_expression "uVar17 + lVar14" identifier + identifier)) ;) }))) }))) (if_statement "if (uVar12 < len) goto LAB_00173b43;" if (parenthesized_expression "(uVar12 < len)" ( (binary_expression "uVar12 < len" identifier < identifier) )) (goto_statement "goto LAB_00173b43;" goto statement_identifier ;)) (expression_statement "wVar7 = _new_element(&l);" (assignment_expression "wVar7 = _new_element(&l)" identifier = (call_expression "_new_element(&l)" identifier (argument_list "(&l)" ( (pointer_expression "&l" & identifier) )))) ;) (expression_statement "uVar12 = len;" (assignment_expression "uVar12 = len" identifier = identifier) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (expression_statement "puVar6 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar6 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (if_statement "if (((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }\n      else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }" if (parenthesized_expression "(((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2))" ( (binary_expression "((bVar1 & 0x20) == 0) || (uVar13 - 0x30 < 2)" (parenthesized_expression "((bVar1 & 0x20) == 0)" ( (binary_expression "(bVar1 & 0x20) == 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(uVar13 - 0x30 < 2)" ( (binary_expression "uVar13 - 0x30 < 2" (binary_expression "uVar13 - 0x30" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n        if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }\n        uVar12 = len;\n        l = plVar11;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n      }" { (if_statement "if ((bVar1 & 0xc0) == 0x80) {\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }" if (parenthesized_expression "((bVar1 & 0xc0) == 0x80)" ( (binary_expression "(bVar1 & 0xc0) == 0x80" (parenthesized_expression "(bVar1 & 0xc0)" ( (binary_expression "bVar1 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          l->used = (uint)bVar1;\n          l->type = LTC_ASN1_CONTEXT_SPECIFIC;\n          __size = len - lVar14;\n          pvVar8 = calloc(1,__size);\n          plVar11->data = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,in + lVar14,__size);\n          plVar11->size = __size;\n          goto LAB_00173a10;\n        }" { (expression_statement "l->used = (uint)bVar1;" (assignment_expression "l->used = (uint)bVar1" (field_expression "l->used" identifier -> field_identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "l->type = LTC_ASN1_CONTEXT_SPECIFIC;" (assignment_expression "l->type = LTC_ASN1_CONTEXT_SPECIFIC" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "__size = len - lVar14;" (assignment_expression "__size = len - lVar14" identifier = (binary_expression "len - lVar14" identifier - identifier)) ;) (expression_statement "pvVar8 = calloc(1,__size);" (assignment_expression "pvVar8 = calloc(1,__size)" identifier = (call_expression "calloc(1,__size)" identifier (argument_list "(1,__size)" ( number_literal , identifier )))) ;) (expression_statement "plVar11->data = pvVar8;" (assignment_expression "plVar11->data = pvVar8" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "memcpy(pvVar8,in + lVar14,__size);" (call_expression "memcpy(pvVar8,in + lVar14,__size)" identifier (argument_list "(pvVar8,in + lVar14,__size)" ( identifier , (binary_expression "in + lVar14" identifier + identifier) , identifier ))) ;) (expression_statement "plVar11->size = __size;" (assignment_expression "plVar11->size = __size" (field_expression "plVar11->size" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (switch_statement "switch(uVar13) {\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }" switch (parenthesized_expression "(uVar13)" ( identifier )) (compound_statement "{\n        default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;\n        case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;\n        case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;\n        case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;\n        case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;\n        case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;\n        }" { (case_statement "default:\n          plVar9 = l->prev;\n          if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }\n          goto joined_r0x001740db;" default : (expression_statement "plVar9 = l->prev;" (assignment_expression "plVar9 = l->prev" identifier = (field_expression "l->prev" identifier -> field_identifier)) ;) (if_statement "if (plVar9 != (ltc_asn1_list_ *)0x0) {\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }" if (parenthesized_expression "(plVar9 != (ltc_asn1_list_ *)0x0)" ( (binary_expression "plVar9 != (ltc_asn1_list_ *)0x0" identifier != (cast_expression "(ltc_asn1_list_ *)0x0" ( (type_descriptor "ltc_asn1_list_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            l = plVar9;\n            free(plVar9->next);\n            l->next = (ltc_asn1_list_ *)0x0;\n          }" { (expression_statement "l = plVar9;" (assignment_expression "l = plVar9" identifier = identifier) ;) (expression_statement "free(plVar9->next);" (call_expression "free(plVar9->next)" identifier (argument_list "(plVar9->next)" ( (field_expression "plVar9->next" identifier -> field_identifier) ))) ;) (expression_statement "l->next = (ltc_asn1_list_ *)0x0;" (assignment_expression "l->next = (ltc_asn1_list_ *)0x0" (field_expression "l->next" identifier -> field_identifier) = (cast_expression "(ltc_asn1_list_ *)0x0" ( (type_descriptor "ltc_asn1_list_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (goto_statement "goto joined_r0x001740db;" goto statement_identifier ;)) (case_statement "case 1:\n          l->type = LTC_ASN1_BOOLEAN;\n          l->size = 1;\n          out_03 = (int *)calloc(1,4);\n          uVar12 = *inlen;\n          plVar11->data = out_03;\n          wVar7 = der_decode_boolean(in,uVar12,out_03);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_boolean(&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_BOOLEAN;" (assignment_expression "l->type = LTC_ASN1_BOOLEAN" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = 1;" (assignment_expression "l->size = 1" (field_expression "l->size" identifier -> field_identifier) = number_literal) ;) (expression_statement "out_03 = (int *)calloc(1,4);" (assignment_expression "out_03 = (int *)calloc(1,4)" identifier = (cast_expression "(int *)calloc(1,4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "uVar12 = *inlen;" (assignment_expression "uVar12 = *inlen" identifier = (pointer_expression "*inlen" * identifier)) ;) (expression_statement "plVar11->data = out_03;" (assignment_expression "plVar11->data = out_03" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (expression_statement "wVar7 = der_decode_boolean(in,uVar12,out_03);" (assignment_expression "wVar7 = der_decode_boolean(in,uVar12,out_03)" identifier = (call_expression "der_decode_boolean(in,uVar12,out_03)" identifier (argument_list "(in,uVar12,out_03)" ( identifier , identifier , identifier )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_boolean(&len);" (assignment_expression "wVar7 = der_length_boolean(&len)" identifier = (call_expression "der_length_boolean(&len)" identifier (argument_list "(&len)" ( (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n          l->type = LTC_ASN1_INTEGER;\n          l->size = 1;\n          wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);\n          plVar11 = l;\n          if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;\n          wVar7 = der_length_integer(l->data,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_INTEGER;" (assignment_expression "l->type = LTC_ASN1_INTEGER" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = 1;" (assignment_expression "l->size = 1" (field_expression "l->size" identifier -> field_identifier) = number_literal) ;) (expression_statement "wVar7 = (**(code **)(puVar6 + 0x10))(&l->data);" (assignment_expression "wVar7 = (**(code **)(puVar6 + 0x10))(&l->data)" identifier = (call_expression "(**(code **)(puVar6 + 0x10))(&l->data)" (parenthesized_expression "(**(code **)(puVar6 + 0x10))" ( (pointer_expression "**(code **)(puVar6 + 0x10)" * (pointer_expression "*(code **)(puVar6 + 0x10)" * (cast_expression "(code **)(puVar6 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) ))))) )) (argument_list "(&l->data)" ( (pointer_expression "&l->data" & (field_expression "l->data" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if ((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))\n          goto LAB_00173b4d;" if (parenthesized_expression "((wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'))" ( (binary_expression "(wVar7 != L'\0') ||\n             (wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0')" (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) || (parenthesized_expression "(wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0')" ( (comma_expression "wVar7 = der_decode_integer(in,*inlen,l->data), plVar11 = l, wVar7 != L'\0'" (assignment_expression "wVar7 = der_decode_integer(in,*inlen,l->data)" identifier = (call_expression "der_decode_integer(in,*inlen,l->data)" identifier (argument_list "(in,*inlen,l->data)" ( identifier , (pointer_expression "*inlen" * identifier) , (field_expression "l->data" identifier -> field_identifier) )))) , (comma_expression "plVar11 = l, wVar7 != L'\0'" (assignment_expression "plVar11 = l" identifier = identifier) , (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')))) ))) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_integer(l->data,&len);" (assignment_expression "wVar7 = der_length_integer(l->data,&len)" identifier = (call_expression "der_length_integer(l->data,&len)" identifier (argument_list "(l->data,&len)" ( (field_expression "l->data" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n          l->type = LTC_ASN1_BIT_STRING;\n          l->size = len * 8;\n          puVar10 = (uchar *)calloc(1,len * 8);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_bit_string(l->size,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_BIT_STRING;" (assignment_expression "l->type = LTC_ASN1_BIT_STRING" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len * 8;" (assignment_expression "l->size = len * 8" (field_expression "l->size" identifier -> field_identifier) = (binary_expression "len * 8" identifier * number_literal)) ;) (expression_statement "puVar10 = (uchar *)calloc(1,len * 8);" (assignment_expression "puVar10 = (uchar *)calloc(1,len * 8)" identifier = (cast_expression "(uchar *)calloc(1,len * 8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,len * 8)" identifier (argument_list "(1,len * 8)" ( number_literal , (binary_expression "len * 8" identifier * number_literal) ))))) ;) (expression_statement "plVar11->data = puVar10;" (assignment_expression "plVar11->data = puVar10" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (puVar10 == (uchar *)0x0) goto LAB_00174142;" if (parenthesized_expression "(puVar10 == (uchar *)0x0)" ( (binary_expression "puVar10 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size);" (assignment_expression "wVar7 = der_decode_bit_string(in,*inlen,puVar10,&plVar11->size)" identifier = (call_expression "der_decode_bit_string(in,*inlen,puVar10,&plVar11->size)" identifier (argument_list "(in,*inlen,puVar10,&plVar11->size)" ( identifier , (pointer_expression "*inlen" * identifier) , identifier , (pointer_expression "&plVar11->size" & (field_expression "plVar11->size" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_bit_string(l->size,&len);" (assignment_expression "wVar7 = der_length_bit_string(l->size,&len)" identifier = (call_expression "der_length_bit_string(l->size,&len)" identifier (argument_list "(l->size,&len)" ( (field_expression "l->size" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n          l->type = LTC_ASN1_OCTET_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_octet_string(l->size,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_OCTET_STRING;" (assignment_expression "l->type = LTC_ASN1_OCTET_STRING" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len;" (assignment_expression "l->size = len" (field_expression "l->size" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar10 = (uchar *)calloc(1,len);" (assignment_expression "puVar10 = (uchar *)calloc(1,len)" identifier = (cast_expression "(uchar *)calloc(1,len)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,len)" identifier (argument_list "(1,len)" ( number_literal , identifier ))))) ;) (expression_statement "plVar11->data = puVar10;" (assignment_expression "plVar11->data = puVar10" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (puVar10 == (uchar *)0x0) goto LAB_00174142;" if (parenthesized_expression "(puVar10 == (uchar *)0x0)" ( (binary_expression "puVar10 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size);" (assignment_expression "wVar7 = der_decode_octet_string(in,*inlen,puVar10,&plVar11->size)" identifier = (call_expression "der_decode_octet_string(in,*inlen,puVar10,&plVar11->size)" identifier (argument_list "(in,*inlen,puVar10,&plVar11->size)" ( identifier , (pointer_expression "*inlen" * identifier) , identifier , (pointer_expression "&plVar11->size" & (field_expression "plVar11->size" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_octet_string(l->size,&len);" (assignment_expression "wVar7 = der_length_octet_string(l->size,&len)" identifier = (call_expression "der_length_octet_string(l->size,&len)" identifier (argument_list "(l->size,&len)" ( (field_expression "l->size" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n          if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }\n          wVar7 = L'\a';\n          goto LAB_00173b4d;" case number_literal : (if_statement "if ((*in == 5) && (in[1] == 0)) {\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }" if (parenthesized_expression "((*in == 5) && (in[1] == 0))" ( (binary_expression "(*in == 5) && (in[1] == 0)" (parenthesized_expression "(*in == 5)" ( (binary_expression "*in == 5" (pointer_expression "*in" * identifier) == number_literal) )) && (parenthesized_expression "(in[1] == 0)" ( (binary_expression "in[1] == 0" (subscript_expression "in[1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n            l->type = LTC_ASN1_NULL;\n            l->data = (void *)0x0;\n            l->size = 0;\n            len = 2;\n            uVar12 = 2;\n            goto LAB_00173a10;\n          }" { (expression_statement "l->type = LTC_ASN1_NULL;" (assignment_expression "l->type = LTC_ASN1_NULL" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->data = (void *)0x0;" (assignment_expression "l->data = (void *)0x0" (field_expression "l->data" identifier -> field_identifier) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "l->size = 0;" (assignment_expression "l->size = 0" (field_expression "l->size" identifier -> field_identifier) = number_literal) ;) (expression_statement "len = 2;" (assignment_expression "len = 2" identifier = number_literal) ;) (expression_statement "uVar12 = 2;" (assignment_expression "uVar12 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (expression_statement "wVar7 = L'\a';" (assignment_expression "wVar7 = L'\a'" identifier = (char_literal "L'\a'" L' escape_sequence ')) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (case_statement "case 6:\n          l->type = LTC_ASN1_OBJECT_IDENTIFIER;\n          l->size = len;\n          words = (ulong *)calloc(len,8);\n          plVar11->data = words;\n          if (words == (ulong *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);\n          plVar11 = l;\n          if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;" case number_literal : (expression_statement "l->type = LTC_ASN1_OBJECT_IDENTIFIER;" (assignment_expression "l->type = LTC_ASN1_OBJECT_IDENTIFIER" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len;" (assignment_expression "l->size = len" (field_expression "l->size" identifier -> field_identifier) = identifier) ;) (expression_statement "words = (ulong *)calloc(len,8);" (assignment_expression "words = (ulong *)calloc(len,8)" identifier = (cast_expression "(ulong *)calloc(len,8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(len,8)" identifier (argument_list "(len,8)" ( identifier , number_literal ))))) ;) (expression_statement "plVar11->data = words;" (assignment_expression "plVar11->data = words" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (words == (ulong *)0x0) goto LAB_00174142;" if (parenthesized_expression "(words == (ulong *)0x0)" ( (binary_expression "words == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size);" (assignment_expression "wVar7 = der_decode_object_identifier(in,*inlen,words,&plVar11->size)" identifier = (call_expression "der_decode_object_identifier(in,*inlen,words,&plVar11->size)" identifier (argument_list "(in,*inlen,words,&plVar11->size)" ( identifier , (pointer_expression "*inlen" * identifier) , identifier , (pointer_expression "&plVar11->size" & (field_expression "plVar11->size" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if ((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')) {\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" if (parenthesized_expression "((wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0'))" ( (binary_expression "(wVar7 == L'\0') &&\n             (wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')" (parenthesized_expression "(wVar7 == L'\0')" ( (binary_expression "wVar7 == L'\0'" identifier == (char_literal "L'\0'" L' escape_sequence ')) )) && (parenthesized_expression "(wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0')" ( (comma_expression "wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len), plVar11 = l,\n             wVar7 == L'\0'" (assignment_expression "wVar7 = der_length_object_identifier((ulong *)l->data,l->size,&len)" identifier = (call_expression "der_length_object_identifier((ulong *)l->data,l->size,&len)" identifier (argument_list "((ulong *)l->data,l->size,&len)" ( (cast_expression "(ulong *)l->data" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "l->data" identifier -> field_identifier)) , (field_expression "l->size" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) , (comma_expression "plVar11 = l,\n             wVar7 == L'\0'" (assignment_expression "plVar11 = l" identifier = identifier) , (binary_expression "wVar7 == L'\0'" identifier == (char_literal "L'\0'" L' escape_sequence ')))) ))) )) (compound_statement "{\n            pvVar8 = realloc(l->data,l->size * 8);\n            uVar12 = len;\n            if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" { (expression_statement "pvVar8 = realloc(l->data,l->size * 8);" (assignment_expression "pvVar8 = realloc(l->data,l->size * 8)" identifier = (call_expression "realloc(l->data,l->size * 8)" identifier (argument_list "(l->data,l->size * 8)" ( (field_expression "l->data" identifier -> field_identifier) , (binary_expression "l->size * 8" (field_expression "l->size" identifier -> field_identifier) * number_literal) )))) ;) (expression_statement "uVar12 = len;" (assignment_expression "uVar12 = len" identifier = identifier) ;) (if_statement "if (pvVar8 != (void *)0x0) {\n              l->data = pvVar8;\n            }" if (parenthesized_expression "(pvVar8 != (void *)0x0)" ( (binary_expression "pvVar8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              l->data = pvVar8;\n            }" { (expression_statement "l->data = pvVar8;" (assignment_expression "l->data = pvVar8" (field_expression "l->data" identifier -> field_identifier) = identifier) ;) })) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (case_statement "case 0xc:\n          l->type = LTC_ASN1_UTF8_STRING;\n          l->size = len;\n          out_02 = (wchar_t *)calloc(4,len);\n          plVar11->data = out_02;\n          if (out_02 == (wchar_t *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_UTF8_STRING;" (assignment_expression "l->type = LTC_ASN1_UTF8_STRING" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len;" (assignment_expression "l->size = len" (field_expression "l->size" identifier -> field_identifier) = identifier) ;) (expression_statement "out_02 = (wchar_t *)calloc(4,len);" (assignment_expression "out_02 = (wchar_t *)calloc(4,len)" identifier = (cast_expression "(wchar_t *)calloc(4,len)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(4,len)" identifier (argument_list "(4,len)" ( number_literal , identifier ))))) ;) (expression_statement "plVar11->data = out_02;" (assignment_expression "plVar11->data = out_02" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (out_02 == (wchar_t *)0x0) goto LAB_00174142;" if (parenthesized_expression "(out_02 == (wchar_t *)0x0)" ( (binary_expression "out_02 == (wchar_t *)0x0" identifier == (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size);" (assignment_expression "wVar7 = der_decode_utf8_string(in,*inlen,out_02,&plVar11->size)" identifier = (call_expression "der_decode_utf8_string(in,*inlen,out_02,&plVar11->size)" identifier (argument_list "(in,*inlen,out_02,&plVar11->size)" ( identifier , (pointer_expression "*inlen" * identifier) , identifier , (pointer_expression "&plVar11->size" & (field_expression "plVar11->size" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len);" (assignment_expression "wVar7 = der_length_utf8_string((wchar_t *)l->data,l->size,&len)" identifier = (call_expression "der_length_utf8_string((wchar_t *)l->data,l->size,&len)" identifier (argument_list "((wchar_t *)l->data,l->size,&len)" ( (cast_expression "(wchar_t *)l->data" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "l->data" identifier -> field_identifier)) , (field_expression "l->size" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n          l->type = LTC_ASN1_PRINTABLE_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_PRINTABLE_STRING;" (assignment_expression "l->type = LTC_ASN1_PRINTABLE_STRING" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len;" (assignment_expression "l->size = len" (field_expression "l->size" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar10 = (uchar *)calloc(1,len);" (assignment_expression "puVar10 = (uchar *)calloc(1,len)" identifier = (cast_expression "(uchar *)calloc(1,len)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,len)" identifier (argument_list "(1,len)" ( number_literal , identifier ))))) ;) (expression_statement "plVar11->data = puVar10;" (assignment_expression "plVar11->data = puVar10" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (puVar10 == (uchar *)0x0) goto LAB_00174142;" if (parenthesized_expression "(puVar10 == (uchar *)0x0)" ( (binary_expression "puVar10 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size);" (assignment_expression "wVar7 = der_decode_printable_string(in,*inlen,puVar10,&plVar11->size)" identifier = (call_expression "der_decode_printable_string(in,*inlen,puVar10,&plVar11->size)" identifier (argument_list "(in,*inlen,puVar10,&plVar11->size)" ( identifier , (pointer_expression "*inlen" * identifier) , identifier , (pointer_expression "&plVar11->size" & (field_expression "plVar11->size" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len);" (assignment_expression "wVar7 = der_length_printable_string((uchar *)l->data,l->size,&len)" identifier = (call_expression "der_length_printable_string((uchar *)l->data,l->size,&len)" identifier (argument_list "((uchar *)l->data,l->size,&len)" ( (cast_expression "(uchar *)l->data" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "l->data" identifier -> field_identifier)) , (field_expression "l->size" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x14:\n          l->type = LTC_ASN1_TELETEX_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_TELETEX_STRING;" (assignment_expression "l->type = LTC_ASN1_TELETEX_STRING" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len;" (assignment_expression "l->size = len" (field_expression "l->size" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar10 = (uchar *)calloc(1,len);" (assignment_expression "puVar10 = (uchar *)calloc(1,len)" identifier = (cast_expression "(uchar *)calloc(1,len)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,len)" identifier (argument_list "(1,len)" ( number_literal , identifier ))))) ;) (expression_statement "plVar11->data = puVar10;" (assignment_expression "plVar11->data = puVar10" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (puVar10 == (uchar *)0x0) goto LAB_00174142;" if (parenthesized_expression "(puVar10 == (uchar *)0x0)" ( (binary_expression "puVar10 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size);" (assignment_expression "wVar7 = der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size)" identifier = (call_expression "der_decode_teletex_string(in,*inlen,puVar10,&plVar11->size)" identifier (argument_list "(in,*inlen,puVar10,&plVar11->size)" ( identifier , (pointer_expression "*inlen" * identifier) , identifier , (pointer_expression "&plVar11->size" & (field_expression "plVar11->size" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len);" (assignment_expression "wVar7 = der_length_teletex_string((uchar *)l->data,l->size,&len)" identifier = (call_expression "der_length_teletex_string((uchar *)l->data,l->size,&len)" identifier (argument_list "((uchar *)l->data,l->size,&len)" ( (cast_expression "(uchar *)l->data" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "l->data" identifier -> field_identifier)) , (field_expression "l->size" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x16:\n          l->type = LTC_ASN1_IA5_STRING;\n          l->size = len;\n          puVar10 = (uchar *)calloc(1,len);\n          plVar11->data = puVar10;\n          if (puVar10 == (uchar *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_IA5_STRING;" (assignment_expression "l->type = LTC_ASN1_IA5_STRING" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len;" (assignment_expression "l->size = len" (field_expression "l->size" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar10 = (uchar *)calloc(1,len);" (assignment_expression "puVar10 = (uchar *)calloc(1,len)" identifier = (cast_expression "(uchar *)calloc(1,len)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,len)" identifier (argument_list "(1,len)" ( number_literal , identifier ))))) ;) (expression_statement "plVar11->data = puVar10;" (assignment_expression "plVar11->data = puVar10" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (puVar10 == (uchar *)0x0) goto LAB_00174142;" if (parenthesized_expression "(puVar10 == (uchar *)0x0)" ( (binary_expression "puVar10 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size);" (assignment_expression "wVar7 = der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size)" identifier = (call_expression "der_decode_ia5_string(in,*inlen,puVar10,&plVar11->size)" identifier (argument_list "(in,*inlen,puVar10,&plVar11->size)" ( identifier , (pointer_expression "*inlen" * identifier) , identifier , (pointer_expression "&plVar11->size" & (field_expression "plVar11->size" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len);" (assignment_expression "wVar7 = der_length_ia5_string((uchar *)l->data,l->size,&len)" identifier = (call_expression "der_length_ia5_string((uchar *)l->data,l->size,&len)" identifier (argument_list "((uchar *)l->data,l->size,&len)" ( (cast_expression "(uchar *)l->data" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "l->data" identifier -> field_identifier)) , (field_expression "l->size" identifier -> field_identifier) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n          l->type = LTC_ASN1_UTCTIME;\n          l->size = 1;\n          out_01 = (ltc_utctime *)calloc(1,0x24);\n          plVar11->data = out_01;\n          if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;\n          len = *inlen;\n          wVar7 = der_decode_utctime(in,&len,out_01);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_UTCTIME;" (assignment_expression "l->type = LTC_ASN1_UTCTIME" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = 1;" (assignment_expression "l->size = 1" (field_expression "l->size" identifier -> field_identifier) = number_literal) ;) (expression_statement "out_01 = (ltc_utctime *)calloc(1,0x24);" (assignment_expression "out_01 = (ltc_utctime *)calloc(1,0x24)" identifier = (cast_expression "(ltc_utctime *)calloc(1,0x24)" ( (type_descriptor "ltc_utctime *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,0x24)" identifier (argument_list "(1,0x24)" ( number_literal , number_literal ))))) ;) (expression_statement "plVar11->data = out_01;" (assignment_expression "plVar11->data = out_01" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (out_01 == (ltc_utctime *)0x0) goto LAB_00174142;" if (parenthesized_expression "(out_01 == (ltc_utctime *)0x0)" ( (binary_expression "out_01 == (ltc_utctime *)0x0" identifier == (cast_expression "(ltc_utctime *)0x0" ( (type_descriptor "ltc_utctime *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "len = *inlen;" (assignment_expression "len = *inlen" identifier = (pointer_expression "*inlen" * identifier)) ;) (expression_statement "wVar7 = der_decode_utctime(in,&len,out_01);" (assignment_expression "wVar7 = der_decode_utctime(in,&len,out_01)" identifier = (call_expression "der_decode_utctime(in,&len,out_01)" identifier (argument_list "(in,&len,out_01)" ( identifier , (pointer_expression "&len" & identifier) , identifier )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_utctime((ltc_utctime *)l->data,&len);" (assignment_expression "wVar7 = der_length_utctime((ltc_utctime *)l->data,&len)" identifier = (call_expression "der_length_utctime((ltc_utctime *)l->data,&len)" identifier (argument_list "((ltc_utctime *)l->data,&len)" ( (cast_expression "(ltc_utctime *)l->data" ( (type_descriptor "ltc_utctime *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "l->data" identifier -> field_identifier)) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n          l->type = LTC_ASN1_GENERALIZEDTIME;\n          l->size = len;\n          out_00 = (ltc_generalizedtime *)calloc(1,0x28);\n          plVar11->data = out_00;\n          if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;\n          wVar7 = der_decode_generalizedtime(in,&len,out_00);\n          plVar11 = l;\n          if (wVar7 != L'\0') goto LAB_00173b4d;\n          wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);\n          plVar11 = l;\n          break;" case number_literal : (expression_statement "l->type = LTC_ASN1_GENERALIZEDTIME;" (assignment_expression "l->type = LTC_ASN1_GENERALIZEDTIME" (field_expression "l->type" identifier -> field_identifier) = identifier) ;) (expression_statement "l->size = len;" (assignment_expression "l->size = len" (field_expression "l->size" identifier -> field_identifier) = identifier) ;) (expression_statement "out_00 = (ltc_generalizedtime *)calloc(1,0x28);" (assignment_expression "out_00 = (ltc_generalizedtime *)calloc(1,0x28)" identifier = (cast_expression "(ltc_generalizedtime *)calloc(1,0x28)" ( (type_descriptor "ltc_generalizedtime *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,0x28)" identifier (argument_list "(1,0x28)" ( number_literal , number_literal ))))) ;) (expression_statement "plVar11->data = out_00;" (assignment_expression "plVar11->data = out_00" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (out_00 == (ltc_generalizedtime *)0x0) goto LAB_00174142;" if (parenthesized_expression "(out_00 == (ltc_generalizedtime *)0x0)" ( (binary_expression "out_00 == (ltc_generalizedtime *)0x0" identifier == (cast_expression "(ltc_generalizedtime *)0x0" ( (type_descriptor "ltc_generalizedtime *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "wVar7 = der_decode_generalizedtime(in,&len,out_00);" (assignment_expression "wVar7 = der_decode_generalizedtime(in,&len,out_00)" identifier = (call_expression "der_decode_generalizedtime(in,&len,out_00)" identifier (argument_list "(in,&len,out_00)" ( identifier , (pointer_expression "&len" & identifier) , identifier )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len);" (assignment_expression "wVar7 = der_length_generalizedtime((ltc_generalizedtime *)l->data,&len)" identifier = (call_expression "der_length_generalizedtime((ltc_generalizedtime *)l->data,&len)" identifier (argument_list "((ltc_generalizedtime *)l->data,&len)" ( (cast_expression "(ltc_generalizedtime *)l->data" ( (type_descriptor "ltc_generalizedtime *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "l->data" identifier -> field_identifier)) , (pointer_expression "&len" & identifier) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x20:" case number_literal :) (case_statement "case 0x30:" case number_literal :) (case_statement "case 0x31:\n          if (uVar13 == 0x20) goto LAB_00173a94;\n          l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;\n          goto LAB_00173a9b;" case number_literal : (if_statement "if (uVar13 == 0x20) goto LAB_00173a94;" if (parenthesized_expression "(uVar13 == 0x20)" ( (binary_expression "uVar13 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00173a94;" goto statement_identifier ;)) (expression_statement "l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE;" (assignment_expression "l->type = (uVar13 != 0x30) + LTC_ASN1_SEQUENCE" (field_expression "l->type" identifier -> field_identifier) = (binary_expression "(uVar13 != 0x30) + LTC_ASN1_SEQUENCE" (parenthesized_expression "(uVar13 != 0x30)" ( (binary_expression "uVar13 != 0x30" identifier != number_literal) )) + identifier)) ;) (goto_statement "goto LAB_00173a9b;" goto statement_identifier ;)) })) (expression_statement "uVar12 = len;" (assignment_expression "uVar12 = len" identifier = identifier) ;) (expression_statement "l = plVar11;" (assignment_expression "l = plVar11" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) }) (else_clause "else {\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }" else (compound_statement "{\n        l->used = (uint)bVar1;\nLAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;\nLAB_00173a9b:\n        pvVar8 = malloc(len);\n        plVar11->data = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }\n        in_00 = in + lVar14;\n        memcpy(pvVar8,in,uVar12);\n        plVar11->size = uVar12;\n        len = uVar12 - lVar14;\n        *inlen = *inlen - lVar14;\n        wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);\n        plVar11 = l;\n        if (wVar7 != L'\0') goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        plVar9 = l->child;\n        in = in_00;\n        uVar12 = len;\n        if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;\n        plVar9->parent = l;\n        uVar13 = 0;\n        do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);\n        if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }\n      }" { (expression_statement "l->used = (uint)bVar1;" (assignment_expression "l->used = (uint)bVar1" (field_expression "l->used" identifier -> field_identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (labeled_statement "LAB_00173a94:\n        l->type = LTC_ASN1_CONSTRUCTED;" statement_identifier : (expression_statement "l->type = LTC_ASN1_CONSTRUCTED;" (assignment_expression "l->type = LTC_ASN1_CONSTRUCTED" (field_expression "l->type" identifier -> field_identifier) = identifier) ;)) (labeled_statement "LAB_00173a9b:\n        pvVar8 = malloc(len);" statement_identifier : (expression_statement "pvVar8 = malloc(len);" (assignment_expression "pvVar8 = malloc(len)" identifier = (call_expression "malloc(len)" identifier (argument_list "(len)" ( identifier )))) ;)) (expression_statement "plVar11->data = pvVar8;" (assignment_expression "plVar11->data = pvVar8" (field_expression "plVar11->data" identifier -> field_identifier) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00174142:\n          wVar7 = L'\r';\n          goto LAB_00173b4d;\n        }" { (labeled_statement "LAB_00174142:\n          wVar7 = L'\r';" statement_identifier : (expression_statement "wVar7 = L'\r';" (assignment_expression "wVar7 = L'\r'" identifier = (char_literal "L'\r'" L' escape_sequence ')) ;)) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) (expression_statement "in_00 = in + lVar14;" (assignment_expression "in_00 = in + lVar14" identifier = (binary_expression "in + lVar14" identifier + identifier)) ;) (expression_statement "memcpy(pvVar8,in,uVar12);" (call_expression "memcpy(pvVar8,in,uVar12)" identifier (argument_list "(pvVar8,in,uVar12)" ( identifier , identifier , identifier ))) ;) (expression_statement "plVar11->size = uVar12;" (assignment_expression "plVar11->size = uVar12" (field_expression "plVar11->size" identifier -> field_identifier) = identifier) ;) (expression_statement "len = uVar12 - lVar14;" (assignment_expression "len = uVar12 - lVar14" identifier = (binary_expression "uVar12 - lVar14" identifier - identifier)) ;) (expression_statement "*inlen = *inlen - lVar14;" (assignment_expression "*inlen = *inlen - lVar14" (pointer_expression "*inlen" * identifier) = (binary_expression "*inlen - lVar14" (pointer_expression "*inlen" * identifier) - identifier)) ;) (expression_statement "wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child);" (assignment_expression "wVar7 = der_decode_sequence_flexi(in_00,&len,&plVar11->child)" identifier = (call_expression "der_decode_sequence_flexi(in_00,&len,&plVar11->child)" identifier (argument_list "(in_00,&len,&plVar11->child)" ( identifier , (pointer_expression "&len" & identifier) , (pointer_expression "&plVar11->child" & (field_expression "plVar11->child" identifier -> field_identifier)) )))) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (if_statement "if (wVar7 != L'\0') goto LAB_00173b4d;" if (parenthesized_expression "(wVar7 != L'\0')" ( (binary_expression "wVar7 != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "uVar16 = uVar16 + lVar14;" (assignment_expression "uVar16 = uVar16 + lVar14" identifier = (binary_expression "uVar16 + lVar14" identifier + identifier)) ;) (expression_statement "plVar9 = l->child;" (assignment_expression "plVar9 = l->child" identifier = (field_expression "l->child" identifier -> field_identifier)) ;) (expression_statement "in = in_00;" (assignment_expression "in = in_00" identifier = identifier) ;) (expression_statement "uVar12 = len;" (assignment_expression "uVar12 = len" identifier = identifier) ;) (if_statement "if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00173a10;" if (parenthesized_expression "(plVar9 == (ltc_asn1_list_ *)0x0)" ( (binary_expression "plVar9 == (ltc_asn1_list_ *)0x0" identifier == (cast_expression "(ltc_asn1_list_ *)0x0" ( (type_descriptor "ltc_asn1_list_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;)) (expression_statement "plVar9->parent = l;" (assignment_expression "plVar9->parent = l" (field_expression "plVar9->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        } while (plVar9 != (ltc_asn1_list_ *)0x0);" do (compound_statement "{\n          plVar9 = plVar9->child;\n          uVar13 = uVar13 + 1;\n        }" { (expression_statement "plVar9 = plVar9->child;" (assignment_expression "plVar9 = plVar9->child" identifier = (field_expression "plVar9->child" identifier -> field_identifier)) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar9 != (ltc_asn1_list_ *)0x0)" ( (binary_expression "plVar9 != (ltc_asn1_list_ *)0x0" identifier != (cast_expression "(ltc_asn1_list_ *)0x0" ( (type_descriptor "ltc_asn1_list_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (0x1e < uVar13) {\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }" if (parenthesized_expression "(0x1e < uVar13)" ( (binary_expression "0x1e < uVar13" number_literal < identifier) )) (compound_statement "{\n          wVar7 = L'\x01';\n          goto LAB_00173b4d;\n        }" { (expression_statement "wVar7 = L'\x01';" (assignment_expression "wVar7 = L'\x01'" identifier = (char_literal "L'\x01'" L' escape_sequence ')) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00173a10:\n      uVar16 = uVar16 + uVar12;" statement_identifier : (expression_statement "uVar16 = uVar16 + uVar12;" (assignment_expression "uVar16 = uVar16 + uVar12" identifier = (binary_expression "uVar16 + uVar12" identifier + identifier)) ;)) (expression_statement "in = in + uVar12;" (assignment_expression "in = in + uVar12" identifier = (binary_expression "in + uVar12" identifier + identifier)) ;) (expression_statement "uVar12 = *inlen - uVar12;" (assignment_expression "uVar12 = *inlen - uVar12" identifier = (binary_expression "*inlen - uVar12" (pointer_expression "*inlen" * identifier) - identifier)) ;) (expression_statement "*inlen = uVar12;" (assignment_expression "*inlen = uVar12" (pointer_expression "*inlen" * identifier) = identifier) ;) }) while (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) ;) (labeled_statement "joined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }" statement_identifier : (if_statement "if (uVar16 != 0) {\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar5 = false;\n      plVar11 = l;\n      do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );\n    }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "plVar11 = l;" (assignment_expression "plVar11 = l" identifier = identifier) ;) (do_statement "do {\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      } while( true );" do (compound_statement "{\n        plVar9 = plVar11->parent;\n        if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }\n        bVar5 = true;\n        plVar11 = plVar9;\n      }" { (expression_statement "plVar9 = plVar11->parent;" (assignment_expression "plVar9 = plVar11->parent" identifier = (field_expression "plVar11->parent" identifier -> field_identifier)) ;) (if_statement "if (plVar11->prev == (ltc_asn1_list_ *)0x0) {\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }\n        else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }" if (parenthesized_expression "(plVar11->prev == (ltc_asn1_list_ *)0x0)" ( (binary_expression "plVar11->prev == (ltc_asn1_list_ *)0x0" (field_expression "plVar11->prev" identifier -> field_identifier) == (cast_expression "(ltc_asn1_list_ *)0x0" ( (type_descriptor "ltc_asn1_list_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;\n        }" { (if_statement "if (plVar9 == (ltc_asn1_list_ *)0x0) goto LAB_00174128;" if (parenthesized_expression "(plVar9 == (ltc_asn1_list_ *)0x0)" ( (binary_expression "plVar9 == (ltc_asn1_list_ *)0x0" identifier == (cast_expression "(ltc_asn1_list_ *)0x0" ( (type_descriptor "ltc_asn1_list_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174128;" goto statement_identifier ;)) }) (else_clause "else if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }" else (if_statement "if (plVar9 == (ltc_asn1_list_ *)0x0) {\n          plVar9 = plVar11->prev;\n        }" if (parenthesized_expression "(plVar9 == (ltc_asn1_list_ *)0x0)" ( (binary_expression "plVar9 == (ltc_asn1_list_ *)0x0" identifier == (cast_expression "(ltc_asn1_list_ *)0x0" ( (type_descriptor "ltc_asn1_list_ *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          plVar9 = plVar11->prev;\n        }" { (expression_statement "plVar9 = plVar11->prev;" (assignment_expression "plVar9 = plVar11->prev" identifier = (field_expression "plVar11->prev" identifier -> field_identifier)) ;) })))) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) (expression_statement "plVar11 = plVar9;" (assignment_expression "plVar11 = plVar9" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) (expression_statement "wVar7 = L'\0';" (assignment_expression "wVar7 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*out = l;" (assignment_expression "*out = l" (pointer_expression "*out" * identifier) = identifier) ;) (expression_statement "*inlen = uVar16;" (assignment_expression "*inlen = uVar16" (pointer_expression "*inlen" * identifier) = identifier) ;) (labeled_statement "LAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return wVar7;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return wVar7;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return wVar7;\n  }" { (return_statement "return wVar7;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00174128:\n  plVar18 = l;" statement_identifier : (expression_statement "plVar18 = l;" (assignment_expression "plVar18 = l" identifier = identifier) ;)) (if_statement "if (bVar5) {\n    plVar18 = plVar11;\n  }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n    plVar18 = plVar11;\n  }" { (expression_statement "plVar18 = plVar11;" (assignment_expression "plVar18 = plVar11" identifier = identifier) ;) })) (expression_statement "wVar7 = L'\0';" (assignment_expression "wVar7 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*out = plVar18;" (assignment_expression "*out = plVar18" (pointer_expression "*out" * identifier) = identifier) ;) (expression_statement "*inlen = uVar16;" (assignment_expression "*inlen = uVar16" (pointer_expression "*inlen" * identifier) = identifier) ;) (goto_statement "goto LAB_00173b5b;" goto statement_identifier ;) })))
(translation_unit "int der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    \n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}\n\n" (function_definition "int der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    \n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}" primitive_type (function_declarator "der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)" identifier (parameter_list "(byte *param_1,ulong *param_2,undefined8 *param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    \n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "uint3 uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" { (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" identifier (argument_list "("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" if (parenthesized_expression "(param_2 == (ulong *)0x0)" ( (binary_expression "param_2 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" { (expression_statement "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);" (call_expression "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" identifier (argument_list "("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" ( (string_literal ""inlen != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" if (parenthesized_expression "(param_3 == (undefined8 *)0x0)" ( (binary_expression "param_3 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" { (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" identifier (argument_list "("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }" { (expression_statement "iVar7 = FUN_00173800(&local_50);" (assignment_expression "iVar7 = FUN_00173800(&local_50)" identifier = (call_expression "FUN_00173800(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }" { (labeled_statement "LAB_00173b4d:\n      der_sequence_free(piVar10);" statement_identifier : (expression_statement "der_sequence_free(piVar10);" (call_expression "der_sequence_free(piVar10)" identifier (argument_list "(piVar10)" ( identifier ))) ;)) (goto_statement "goto LAB_00173b5b;" goto statement_identifier ;) })) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar11 != 0) goto LAB_001738bc;" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001738bc;" goto statement_identifier ;)) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" else (compound_statement "{\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" { (labeled_statement "LAB_001738bc:\n    uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (do_statement "do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);" do (compound_statement "{\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    }" { (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar12 = (ulong)bVar1;" (assignment_expression "uVar12 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }" if (parenthesized_expression "(uVar11 < 2)" ( (binary_expression "uVar11 < 2" identifier < number_literal) )) (compound_statement "{\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }" { (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00173b43:\n        iVar7 = 7;" statement_identifier : (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" identifier = number_literal) ;)) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) (expression_statement "bVar2 = param_1[1];" (assignment_expression "bVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" if (parenthesized_expression "((ulong)bVar2 < 0x80)" ( (binary_expression "(ulong)bVar2 < 0x80" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }" { (expression_statement "local_48 = (ulong)bVar2 + 2;" (assignment_expression "local_48 = (ulong)bVar2 + 2" identifier = (binary_expression "(ulong)bVar2 + 2" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal)) ;) (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" identifier = number_literal) ;) }) (else_clause "else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" else (compound_statement "{\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" { (expression_statement "uVar15 = (ulong)(bVar2 & 0x7f);" (assignment_expression "uVar15 = (ulong)(bVar2 & 0x7f)" identifier = (call_expression "(ulong)(bVar2 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 0x7f)" ( (binary_expression "bVar2 & 0x7f" identifier & number_literal) )))) ;) (if_statement "if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" if (parenthesized_expression "((uVar11 - 2 < uVar15) || (3 < uVar15 - 1))" ( (binary_expression "(uVar11 - 2 < uVar15) || (3 < uVar15 - 1)" (parenthesized_expression "(uVar11 - 2 < uVar15)" ( (binary_expression "uVar11 - 2 < uVar15" (binary_expression "uVar11 - 2" identifier - number_literal) < identifier) )) || (parenthesized_expression "(3 < uVar15 - 1)" ( (binary_expression "3 < uVar15 - 1" number_literal < (binary_expression "uVar15 - 1" identifier - number_literal)) ))) )) (compound_statement "{\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }" { (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" identifier = number_literal) ;) (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" else (compound_statement "{\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" { (expression_statement "lVar14 = uVar15 + 2;" (assignment_expression "lVar14 = uVar15 + 2" identifier = (binary_expression "uVar15 + 2" identifier + number_literal)) ;) (expression_statement "local_48 = (ulong)param_1[2];" (assignment_expression "local_48 = (ulong)param_1[2]" identifier = (cast_expression "(ulong)param_1[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (if_statement "if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }" if (parenthesized_expression "(uVar15 != 1)" ( (binary_expression "uVar15 != 1" identifier != number_literal) )) (compound_statement "{\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }" { (expression_statement "uVar3 = CONCAT11(param_1[2],param_1[3]);" (assignment_expression "uVar3 = CONCAT11(param_1[2],param_1[3])" identifier = (call_expression "CONCAT11(param_1[2],param_1[3])" identifier (argument_list "(param_1[2],param_1[3])" ( (subscript_expression "param_1[2]" identifier [ number_literal ]) , (subscript_expression "param_1[3]" identifier [ number_literal ]) )))) ;) (expression_statement "local_48 = (ulong)uVar3;" (assignment_expression "local_48 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }" if (parenthesized_expression "(uVar15 != 2)" ( (binary_expression "uVar15 != 2" identifier != number_literal) )) (compound_statement "{\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }" { (expression_statement "uVar4 = CONCAT21(uVar3,param_1[4]);" (assignment_expression "uVar4 = CONCAT21(uVar3,param_1[4])" identifier = (call_expression "CONCAT21(uVar3,param_1[4])" identifier (argument_list "(uVar3,param_1[4])" ( identifier , (subscript_expression "param_1[4]" identifier [ number_literal ]) )))) ;) (expression_statement "local_48 = (ulong)uVar4;" (assignment_expression "local_48 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }" if (parenthesized_expression "(uVar15 != 3)" ( (binary_expression "uVar15 != 3" identifier != number_literal) )) (compound_statement "{\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }" { (expression_statement "local_48 = (ulong)CONCAT31(uVar4,param_1[5]);" (assignment_expression "local_48 = (ulong)CONCAT31(uVar4,param_1[5])" identifier = (cast_expression "(ulong)CONCAT31(uVar4,param_1[5])" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CONCAT31(uVar4,param_1[5])" identifier (argument_list "(uVar4,param_1[5])" ( identifier , (subscript_expression "param_1[5]" identifier [ number_literal ]) ))))) ;) })) })) })) (expression_statement "local_48 = local_48 + lVar14;" (assignment_expression "local_48 = local_48 + lVar14" identifier = (binary_expression "local_48 + lVar14" identifier + identifier)) ;) }))) }))) (if_statement "if (uVar11 < local_48) goto LAB_00173b43;" if (parenthesized_expression "(uVar11 < local_48)" ( (binary_expression "uVar11 < local_48" identifier < identifier) )) (goto_statement "goto LAB_00173b43;" goto statement_identifier ;)) (expression_statement "iVar7 = FUN_00173800(&local_50);" (assignment_expression "iVar7 = FUN_00173800(&local_50)" identifier = (call_expression "FUN_00173800(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) )))) ;) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (expression_statement "puVar6 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar6 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (if_statement "if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" if (parenthesized_expression "(((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2))" ( (binary_expression "((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)" (parenthesized_expression "((bVar1 & 0x20) == 0)" ( (binary_expression "(bVar1 & 0x20) == 0" (parenthesized_expression "(bVar1 & 0x20)" ( (binary_expression "bVar1 & 0x20" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(uVar12 - 0x30 < 2)" ( (binary_expression "uVar12 - 0x30 < 2" (binary_expression "uVar12 - 0x30" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }" { (if_statement "if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }" if (parenthesized_expression "((bVar1 & 0xc0) == 0x80)" ( (binary_expression "(bVar1 & 0xc0) == 0x80" (parenthesized_expression "(bVar1 & 0xc0)" ( (binary_expression "bVar1 & 0xc0" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }" { (expression_statement "local_50[6] = (uint)bVar1;" (assignment_expression "local_50[6] = (uint)bVar1" (subscript_expression "local_50[6]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*local_50 = 0x13;" (assignment_expression "*local_50 = 0x13" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "__size = local_48 - lVar14;" (assignment_expression "__size = local_48 - lVar14" identifier = (binary_expression "local_48 - lVar14" identifier - identifier)) ;) (expression_statement "pvVar8 = calloc(1,__size);" (assignment_expression "pvVar8 = calloc(1,__size)" identifier = (call_expression "calloc(1,__size)" identifier (argument_list "(1,__size)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "memcpy(pvVar8,param_1 + lVar14,__size);" (call_expression "memcpy(pvVar8,param_1 + lVar14,__size)" identifier (argument_list "(pvVar8,param_1 + lVar14,__size)" ( identifier , (binary_expression "param_1 + lVar14" identifier + identifier) , identifier ))) ;) (expression_statement "*(size_t *)(piVar10 + 4) = __size;" (assignment_expression "*(size_t *)(piVar10 + 4) = __size" (pointer_expression "*(size_t *)(piVar10 + 4)" * (cast_expression "(size_t *)(piVar10 + 4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 4)" ( (binary_expression "piVar10 + 4" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (switch_statement "switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }" switch (parenthesized_expression "(uVar12)" ( identifier )) (compound_statement "{\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }" { (case_statement "default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;" default : (expression_statement "piVar10 = *(int **)(local_50 + 8);" (assignment_expression "piVar10 = *(int **)(local_50 + 8)" identifier = (pointer_expression "*(int **)(local_50 + 8)" * (cast_expression "(int **)(local_50 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_50 + 8)" ( (binary_expression "local_50 + 8" identifier + number_literal) ))))) ;) (if_statement "if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }" { (expression_statement "local_50 = piVar10;" (assignment_expression "local_50 = piVar10" identifier = identifier) ;) (expression_statement "free(*(void **)(piVar10 + 10));" (call_expression "free(*(void **)(piVar10 + 10))" identifier (argument_list "(*(void **)(piVar10 + 10))" ( (pointer_expression "*(void **)(piVar10 + 10)" * (cast_expression "(void **)(piVar10 + 10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 10)" ( (binary_expression "piVar10 + 10" identifier + number_literal) )))) ))) ;) (expression_statement "local_50[10] = 0;" (assignment_expression "local_50[10] = 0" (subscript_expression "local_50[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[0xb] = 0;" (assignment_expression "local_50[0xb] = 0" (subscript_expression "local_50[0xb]" identifier [ number_literal ]) = number_literal) ;) })) (goto_statement "goto joined_r0x001740db;" goto statement_identifier ;)) (case_statement "case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 1;" (assignment_expression "*local_50 = 1" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pvVar8 = calloc(1,4);" (assignment_expression "pvVar8 = calloc(1,4)" identifier = (call_expression "calloc(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal )))) ;) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);" (assignment_expression "iVar7 = der_decode_boolean(param_1,uVar11,pvVar8)" identifier = (call_expression "der_decode_boolean(param_1,uVar11,pvVar8)" identifier (argument_list "(param_1,uVar11,pvVar8)" ( identifier , identifier , identifier )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_boolean(&local_48);" (assignment_expression "iVar7 = der_length_boolean(&local_48)" identifier = (call_expression "der_length_boolean(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 2;" (assignment_expression "*local_50 = 2" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);" (assignment_expression "iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2)" identifier = (call_expression "(**(code **)(puVar6 + 0x10))(local_50 + 2)" (parenthesized_expression "(**(code **)(puVar6 + 0x10))" ( (pointer_expression "**(code **)(puVar6 + 0x10)" * (pointer_expression "*(code **)(puVar6 + 0x10)" * (cast_expression "(code **)(puVar6 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) ))))) )) (argument_list "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;" if (parenthesized_expression "((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0))" ( (binary_expression "(iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)" ( (comma_expression "iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0" (assignment_expression "iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2))" identifier = (call_expression "der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2))" identifier (argument_list "(param_1,*param_2,*(undefined8 *)(local_50 + 2))" ( identifier , (pointer_expression "*param_2" * identifier) , (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) )))) , (comma_expression "piVar10 = local_50, iVar7 != 0" (assignment_expression "piVar10 = local_50" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48)" identifier = (call_expression "der_length_integer(*(undefined8 *)(local_50 + 2),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 4;" (assignment_expression "*local_50 = 4" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48 * 8;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48 * 8" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = (binary_expression "local_48 * 8" identifier * number_literal)) ;) (expression_statement "pvVar8 = calloc(1,local_48 * 8);" (assignment_expression "pvVar8 = calloc(1,local_48 * 8)" identifier = (call_expression "calloc(1,local_48 * 8)" identifier (argument_list "(1,local_48 * 8)" ( number_literal , (binary_expression "local_48 * 8" identifier * number_literal) )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 5;" (assignment_expression "*local_50 = 5" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;" case number_literal : (if_statement "if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }" if (parenthesized_expression "((*param_1 == 5) && (param_1[1] == 0))" ( (binary_expression "(*param_1 == 5) && (param_1[1] == 0)" (parenthesized_expression "(*param_1 == 5)" ( (binary_expression "*param_1 == 5" (pointer_expression "*param_1" * identifier) == number_literal) )) && (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }" { (expression_statement "*local_50 = 6;" (assignment_expression "*local_50 = 6" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[2] = 0;" (assignment_expression "local_50[2] = 0" (subscript_expression "local_50[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[3] = 0;" (assignment_expression "local_50[3] = 0" (subscript_expression "local_50[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[4] = 0;" (assignment_expression "local_50[4] = 0" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (case_statement "case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;" case number_literal : (expression_statement "*local_50 = 7;" (assignment_expression "*local_50 = 7" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(local_48,8);" (assignment_expression "pvVar8 = calloc(local_48,8)" identifier = (call_expression "calloc(local_48,8)" identifier (argument_list "(local_48,8)" ( identifier , number_literal )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" if (parenthesized_expression "((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0))" ( (binary_expression "(iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)" ( (comma_expression "iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0" (assignment_expression "iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" identifier = (call_expression "der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) , (comma_expression "piVar10 = local_50, iVar7 == 0" (assignment_expression "piVar10 = local_50" identifier = identifier) , (binary_expression "iVar7 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" { (expression_statement "pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);" (assignment_expression "pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" identifier = (call_expression "realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" identifier (argument_list "(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" ( (pointer_expression "*(void **)(local_50 + 2)" * (cast_expression "(void **)(local_50 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (binary_expression "*(long *)(local_50 + 4) * 8" (pointer_expression "*(long *)(local_50 + 4)" * (cast_expression "(long *)(local_50 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) * number_literal) )))) ;) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (if_statement "if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }" if (parenthesized_expression "(pvVar8 != (void *)0x0)" ( (binary_expression "pvVar8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(void **)(local_50 + 2) = pvVar8;\n            }" { (expression_statement "*(void **)(local_50 + 2) = pvVar8;" (assignment_expression "*(void **)(local_50 + 2) = pvVar8" (pointer_expression "*(void **)(local_50 + 2)" * (cast_expression "(void **)(local_50 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) = identifier) ;) })) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;) })) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (case_statement "case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 10;" (assignment_expression "*local_50 = 10" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(4,local_48);" (assignment_expression "pvVar8 = calloc(4,local_48)" identifier = (call_expression "calloc(4,local_48)" identifier (argument_list "(4,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 9;" (assignment_expression "*local_50 = 9" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 0x11;" (assignment_expression "*local_50 = 0x11" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 8;" (assignment_expression "*local_50 = 8" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" identifier = (call_expression "calloc(1,local_48)" identifier (argument_list "(1,local_48)" ( number_literal , identifier )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier = (call_expression "der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4)" identifier (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" ( identifier , (pointer_expression "*param_2" * identifier) , identifier , (binary_expression "piVar10 + 4" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier = (call_expression "der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(local_50 + 4)" * (cast_expression "(undefined8 *)(local_50 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 0xb;" (assignment_expression "*local_50 = 0xb" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pvVar8 = calloc(1,0x24);" (assignment_expression "pvVar8 = calloc(1,0x24)" identifier = (call_expression "calloc(1,0x24)" identifier (argument_list "(1,0x24)" ( number_literal , number_literal )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "local_48 = *param_2;" (assignment_expression "local_48 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);" (assignment_expression "iVar7 = der_decode_utctime(param_1,&local_48,pvVar8)" identifier = (call_expression "der_decode_utctime(param_1,&local_48,pvVar8)" identifier (argument_list "(param_1,&local_48,pvVar8)" ( identifier , (pointer_expression "&local_48" & identifier) , identifier )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48)" identifier = (call_expression "der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" case number_literal : (expression_statement "*local_50 = 0x14;" (assignment_expression "*local_50 = 0x14" (pointer_expression "*local_50" * identifier) = number_literal) ;) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" * (cast_expression "(ulong *)(local_50 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 4)" ( (binary_expression "local_50 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pvVar8 = calloc(1,0x28);" (assignment_expression "pvVar8 = calloc(1,0x28)" identifier = (call_expression "calloc(1,0x28)" identifier (argument_list "(1,0x28)" ( number_literal , number_literal )))) ;) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174142;" goto statement_identifier ;)) (expression_statement "iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);" (assignment_expression "iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8)" identifier = (call_expression "der_decode_generalizedtime(param_1,&local_48,pvVar8)" identifier (argument_list "(param_1,&local_48,pvVar8)" ( identifier , (pointer_expression "&local_48" & identifier) , identifier )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48)" identifier = (call_expression "der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48)" identifier (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" ( (pointer_expression "*(undefined8 *)(local_50 + 2)" * (cast_expression "(undefined8 *)(local_50 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 2)" ( (binary_expression "local_50 + 2" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x20:" case number_literal :) (case_statement "case 0x30:" case number_literal :) (case_statement "case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;" case number_literal : (if_statement "if (uVar12 == 0x20) goto LAB_00173a94;" if (parenthesized_expression "(uVar12 == 0x20)" ( (binary_expression "uVar12 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00173a94;" goto statement_identifier ;)) (expression_statement "*local_50 = (uVar12 != 0x30) + 0xd;" (assignment_expression "*local_50 = (uVar12 != 0x30) + 0xd" (pointer_expression "*local_50" * identifier) = (binary_expression "(uVar12 != 0x30) + 0xd" (parenthesized_expression "(uVar12 != 0x30)" ( (binary_expression "uVar12 != 0x30" identifier != number_literal) )) + number_literal)) ;) (goto_statement "goto LAB_00173a9b;" goto statement_identifier ;)) })) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (expression_statement "local_50 = piVar10;" (assignment_expression "local_50 = piVar10" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) }) (else_clause "else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" else (compound_statement "{\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" { (expression_statement "local_50[6] = (uint)bVar1;" (assignment_expression "local_50[6] = (uint)bVar1" (subscript_expression "local_50[6]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (labeled_statement "LAB_00173a94:\n        *local_50 = 0x12;" statement_identifier : (expression_statement "*local_50 = 0x12;" (assignment_expression "*local_50 = 0x12" (pointer_expression "*local_50" * identifier) = number_literal) ;)) (labeled_statement "LAB_00173a9b:\n        pvVar8 = malloc(local_48);" statement_identifier : (expression_statement "pvVar8 = malloc(local_48);" (assignment_expression "pvVar8 = malloc(local_48)" identifier = (call_expression "malloc(local_48)" identifier (argument_list "(local_48)" ( identifier )))) ;)) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" * (cast_expression "(void **)(piVar10 + 2)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 2)" ( (binary_expression "piVar10 + 2" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }" { (labeled_statement "LAB_00174142:\n          iVar7 = 0xd;" statement_identifier : (expression_statement "iVar7 = 0xd;" (assignment_expression "iVar7 = 0xd" identifier = number_literal) ;)) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" identifier = (binary_expression "param_1 + lVar14" identifier + identifier)) ;) (expression_statement "memcpy(pvVar8,param_1,uVar11);" (call_expression "memcpy(pvVar8,param_1,uVar11)" identifier (argument_list "(pvVar8,param_1,uVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(ulong *)(piVar10 + 4) = uVar11;" (assignment_expression "*(ulong *)(piVar10 + 4) = uVar11" (pointer_expression "*(ulong *)(piVar10 + 4)" * (cast_expression "(ulong *)(piVar10 + 4)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 4)" ( (binary_expression "piVar10 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_48 = uVar11 - lVar14;" (assignment_expression "local_48 = uVar11 - lVar14" identifier = (binary_expression "uVar11 - lVar14" identifier - identifier)) ;) (expression_statement "*param_2 = *param_2 - lVar14;" (assignment_expression "*param_2 = *param_2 - lVar14" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 - lVar14" (pointer_expression "*param_2" * identifier) - identifier)) ;) (expression_statement "iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);" (assignment_expression "iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc)" identifier = (call_expression "der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc)" identifier (argument_list "(pbVar13,&local_48,piVar10 + 0xc)" ( identifier , (pointer_expression "&local_48" & identifier) , (binary_expression "piVar10 + 0xc" identifier + number_literal) )))) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;)) (expression_statement "uVar16 = uVar16 + lVar14;" (assignment_expression "uVar16 = uVar16 + lVar14" identifier = (binary_expression "uVar16 + lVar14" identifier + identifier)) ;) (expression_statement "lVar14 = *(long *)(local_50 + 0xc);" (assignment_expression "lVar14 = *(long *)(local_50 + 0xc)" identifier = (pointer_expression "*(long *)(local_50 + 0xc)" * (cast_expression "(long *)(local_50 + 0xc)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0xc)" ( (binary_expression "local_50 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "param_1 = pbVar13;" (assignment_expression "param_1 = pbVar13" identifier = identifier) ;) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" identifier = identifier) ;) (if_statement "if (lVar14 == 0) goto LAB_00173a10;" if (parenthesized_expression "(lVar14 == 0)" ( (binary_expression "lVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00173a10;" goto statement_identifier ;)) (expression_statement "*(int **)(lVar14 + 0x38) = local_50;" (assignment_expression "*(int **)(lVar14 + 0x38) = local_50" (pointer_expression "*(int **)(lVar14 + 0x38)" * (cast_expression "(int **)(lVar14 + 0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar14 + 0x38)" ( (binary_expression "lVar14 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);" do (compound_statement "{\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        }" { (expression_statement "lVar14 = *(long *)(lVar14 + 0x30);" (assignment_expression "lVar14 = *(long *)(lVar14 + 0x30)" identifier = (pointer_expression "*(long *)(lVar14 + 0x30)" * (cast_expression "(long *)(lVar14 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar14 + 0x30)" ( (binary_expression "lVar14 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != 0)" ( (binary_expression "lVar14 != 0" identifier != number_literal) )) ;) (if_statement "if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }" if (parenthesized_expression "(0x1e < uVar12)" ( (binary_expression "0x1e < uVar12" number_literal < identifier) )) (compound_statement "{\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00173b4d;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00173a10:\n      uVar16 = uVar16 + uVar11;" statement_identifier : (expression_statement "uVar16 = uVar16 + uVar11;" (assignment_expression "uVar16 = uVar16 + uVar11" identifier = (binary_expression "uVar16 + uVar11" identifier + identifier)) ;)) (expression_statement "param_1 = param_1 + uVar11;" (assignment_expression "param_1 = param_1 + uVar11" identifier = (binary_expression "param_1 + uVar11" identifier + identifier)) ;) (expression_statement "uVar11 = *param_2 - uVar11;" (assignment_expression "uVar11 = *param_2 - uVar11" identifier = (binary_expression "*param_2 - uVar11" (pointer_expression "*param_2" * identifier) - identifier)) ;) (expression_statement "*param_2 = uVar11;" (assignment_expression "*param_2 = uVar11" (pointer_expression "*param_2" * identifier) = identifier) ;) }) while (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) ;) (labeled_statement "joined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" statement_identifier : (if_statement "if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" identifier = identifier) ;) (do_statement "do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );" do (compound_statement "{\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      }" { (expression_statement "piVar9 = *(int **)(piVar10 + 0xe);" (assignment_expression "piVar9 = *(int **)(piVar10 + 0xe)" identifier = (pointer_expression "*(int **)(piVar10 + 0xe)" * (cast_expression "(int **)(piVar10 + 0xe)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 0xe)" ( (binary_expression "piVar10 + 0xe" identifier + number_literal) ))))) ;) (if_statement "if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" if (parenthesized_expression "(*(int **)(piVar10 + 8) == (int *)0x0)" ( (binary_expression "*(int **)(piVar10 + 8) == (int *)0x0" (pointer_expression "*(int **)(piVar10 + 8)" * (cast_expression "(int **)(piVar10 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 8)" ( (binary_expression "piVar10 + 8" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }" { (if_statement "if (piVar9 == (int *)0x0) goto LAB_00174128;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00174128;" goto statement_identifier ;)) }) (else_clause "else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" else (if_statement "if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar9 = *(int **)(piVar10 + 8);\n        }" { (expression_statement "piVar9 = *(int **)(piVar10 + 8);" (assignment_expression "piVar9 = *(int **)(piVar10 + 8)" identifier = (pointer_expression "*(int **)(piVar10 + 8)" * (cast_expression "(int **)(piVar10 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar10 + 8)" ( (binary_expression "piVar10 + 8" identifier + number_literal) ))))) ;) })))) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) }))) }))) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = local_50;" (assignment_expression "*param_3 = local_50" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_2 = uVar16;" (assignment_expression "*param_2 = uVar16" (pointer_expression "*param_2" * identifier) = identifier) ;) (labeled_statement "LAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar7;\n  }" { (return_statement "return iVar7;" return identifier ;) }))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_00174128:\n  piVar9 = local_50;" statement_identifier : (expression_statement "piVar9 = local_50;" (assignment_expression "piVar9 = local_50" identifier = identifier) ;)) (if_statement "if (bVar5) {\n    piVar9 = piVar10;\n  }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n    piVar9 = piVar10;\n  }" { (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) })) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = piVar9;" (assignment_expression "*param_3 = piVar9" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_2 = uVar16;" (assignment_expression "*param_2 = uVar16" (pointer_expression "*param_2" * identifier) = identifier) ;) (goto_statement "goto LAB_00173b5b;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < IDENT) )) || (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))))) ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + IDENT) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement default : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (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) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))) ))) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 ( LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 ( LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 ( LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 ( LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 ( LIT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_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 ( 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) + LIT)) ;) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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 IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) }))) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "int der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    \n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}" (primitive_type "int") (function_declarator "der_decode_sequence_flexi(byte *param_1,ulong *param_2,undefined8 *param_3)" (identifier "der_decode_sequence_flexi") (parameter_list "(byte *param_1,ulong *param_2,undefined8 *param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  ushort uVar3;\n  uint3 uVar4;\n  bool bVar5;\n  undefined *puVar6;\n  int iVar7;\n  void *pvVar8;\n  int *piVar9;\n  int *piVar10;\n  ulong uVar11;\n  ulong uVar12;\n  byte *pbVar13;\n  long lVar14;\n  size_t __size;\n  ulong uVar15;\n  ulong uVar16;\n  long in_FS_OFFSET;\n  int *local_50;\n  ulong local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }\n  if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }\n  if (param_3 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }\n  local_50 = (int *)0x0;\n  uVar11 = *param_2;\n  if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }\n  iVar7 = 0;\n  *param_3 = local_50;\n  *param_2 = uVar16;\nLAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }\n                    \n  __stack_chk_fail();\nLAB_00174128:\n  piVar9 = local_50;\n  if (bVar5) {\n    piVar9 = piVar10;\n  }\n  iVar7 = 0;\n  *param_3 = piVar9;\n  *param_2 = uVar16;\n  goto LAB_00173b5b;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "uint3 uVar4;" (type_identifier "uint3") (identifier "uVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "void *pvVar8;" (primitive_type "void") (pointer_declarator "*pvVar8" (* "*") (identifier "pvVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "size_t __size;" (primitive_type "size_t") (identifier "__size") (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "ulong uVar16;" (type_identifier "ulong") (identifier "uVar16") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "int *local_50;" (primitive_type "int") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "ulong local_48;" (type_identifier "ulong") (identifier "local_48") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" (if "if") (parenthesized_expression "(param_1 == (byte *)0x0)" (( "(") (binary_expression "param_1 == (byte *)0x0" (identifier "param_1") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);\n  }" ({ "{") (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" (identifier "crypt_argchk") (argument_list "("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56)" (( "(") (string_literal ""in != NULL"" (" """) (string_content "in != NULL") (" """)) (, ",") (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" (" """) (string_content "src/pk/asn1/der/sequence/der_decode_sequence_flexi.c") (" """)) (, ",") (number_literal "0x56") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 == (ulong *)0x0) {\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" (if "if") (parenthesized_expression "(param_2 == (ulong *)0x0)" (( "(") (binary_expression "param_2 == (ulong *)0x0" (identifier "param_2") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);\n  }" ({ "{") (expression_statement "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);" (call_expression "crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" (identifier "crypt_argchk") (argument_list "("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57)" (( "(") (string_literal ""inlen != NULL"" (" """) (string_content "inlen != NULL") (" """)) (, ",") (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" (" """) (string_content "src/pk/asn1/der/sequence/der_decode_sequence_flexi.c") (" """)) (, ",") (number_literal "0x57") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == (undefined8 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" (if "if") (parenthesized_expression "(param_3 == (undefined8 *)0x0)" (( "(") (binary_expression "param_3 == (undefined8 *)0x0" (identifier "param_3") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);\n  }" ({ "{") (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" (identifier "crypt_argchk") (argument_list "("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58)" (( "(") (string_literal ""out != NULL"" (" """) (string_content "out != NULL") (" """)) (, ",") (string_literal ""src/pk/asn1/der/sequence/der_decode_sequence_flexi.c"" (" """) (string_content "src/pk/asn1/der/sequence/der_decode_sequence_flexi.c") (" """)) (, ",") (number_literal "0x58") () ")"))) (; ";")) (} "}"))) (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" (identifier "local_50") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" (identifier "uVar11") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (uVar11 == 0) {\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }\n  else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar7 = FUN_00173800(&local_50);\n    piVar10 = local_50;\n    if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }\n    uVar11 = *param_2;\n    if (uVar11 != 0) goto LAB_001738bc;\n    uVar16 = 0;\n  }" ({ "{") (expression_statement "iVar7 = FUN_00173800(&local_50);" (assignment_expression "iVar7 = FUN_00173800(&local_50)" (identifier "iVar7") (= "=") (call_expression "FUN_00173800(&local_50)" (identifier "FUN_00173800") (argument_list "(&local_50)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) {\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00173b4d:\n      der_sequence_free(piVar10);\n      goto LAB_00173b5b;\n    }" ({ "{") (labeled_statement "LAB_00173b4d:\n      der_sequence_free(piVar10);" (statement_identifier "LAB_00173b4d") (: ":") (expression_statement "der_sequence_free(piVar10);" (call_expression "der_sequence_free(piVar10)" (identifier "der_sequence_free") (argument_list "(piVar10)" (( "(") (identifier "piVar10") () ")"))) (; ";"))) (goto_statement "goto LAB_00173b5b;" (goto "goto") (statement_identifier "LAB_00173b5b") (; ";")) (} "}"))) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" (identifier "uVar11") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (uVar11 != 0) goto LAB_001738bc;" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001738bc;" (goto "goto") (statement_identifier "LAB_001738bc") (; ";"))) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" (else "else") (compound_statement "{\nLAB_001738bc:\n    uVar16 = 0;\n    do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);\njoined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }\n  }" ({ "{") (labeled_statement "LAB_001738bc:\n    uVar16 = 0;" (statement_identifier "LAB_001738bc") (: ":") (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    } while (uVar11 != 0);" (do "do") (compound_statement "{\n      bVar1 = *param_1;\n      uVar12 = (ulong)bVar1;\n      if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }\n      bVar2 = param_1[1];\n      if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }\n      if (uVar11 < local_48) goto LAB_00173b43;\n      iVar7 = FUN_00173800(&local_50);\n      uVar11 = local_48;\n      piVar10 = local_50;\n      puVar6 = PTR_ltc_mp_001ddec0;\n      if (iVar7 != 0) goto LAB_00173b4d;\n      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }\nLAB_00173a10:\n      uVar16 = uVar16 + uVar11;\n      param_1 = param_1 + uVar11;\n      uVar11 = *param_2 - uVar11;\n      *param_2 = uVar11;\n    }" ({ "{") (expression_statement "bVar1 = *param_1;" (assignment_expression "bVar1 = *param_1" (identifier "bVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar12 = (ulong)bVar1;" (assignment_expression "uVar12 = (ulong)bVar1" (identifier "uVar12") (= "=") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if (uVar11 < 2) {\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }" (if "if") (parenthesized_expression "(uVar11 < 2)" (( "(") (binary_expression "uVar11 < 2" (identifier "uVar11") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        local_48 = 0xffffffff;\nLAB_00173b43:\n        iVar7 = 7;\n        piVar10 = local_50;\n        goto LAB_00173b4d;\n      }" ({ "{") (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" (identifier "local_48") (= "=") (number_literal "0xffffffff")) (; ";")) (labeled_statement "LAB_00173b43:\n        iVar7 = 7;" (statement_identifier "LAB_00173b43") (: ":") (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" (identifier "iVar7") (= "=") (number_literal "7")) (; ";"))) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";")) (} "}"))) (expression_statement "bVar2 = param_1[1];" (assignment_expression "bVar2 = param_1[1]" (identifier "bVar2") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((ulong)bVar2 < 0x80) {\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }\n      else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" (if "if") (parenthesized_expression "((ulong)bVar2 < 0x80)" (( "(") (binary_expression "(ulong)bVar2 < 0x80" (cast_expression "(ulong)bVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar2")) (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n        local_48 = (ulong)bVar2 + 2;\n        lVar14 = 2;\n      }" ({ "{") (expression_statement "local_48 = (ulong)bVar2 + 2;" (assignment_expression "local_48 = (ulong)bVar2 + 2" (identifier "local_48") (= "=") (binary_expression "(ulong)bVar2 + 2" (cast_expression "(ulong)bVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar2")) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" (identifier "lVar14") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" (else "else") (compound_statement "{\n        uVar15 = (ulong)(bVar2 & 0x7f);\n        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }\n      }" ({ "{") (expression_statement "uVar15 = (ulong)(bVar2 & 0x7f);" (assignment_expression "uVar15 = (ulong)(bVar2 & 0x7f)" (identifier "uVar15") (= "=") (call_expression "(ulong)(bVar2 & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar2 & 0x7f)" (( "(") (binary_expression "bVar2 & 0x7f" (identifier "bVar2") (& "&") (number_literal "0x7f")) () ")")))) (; ";")) (if_statement "if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }\n        else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" (if "if") (parenthesized_expression "((uVar11 - 2 < uVar15) || (3 < uVar15 - 1))" (( "(") (binary_expression "(uVar11 - 2 < uVar15) || (3 < uVar15 - 1)" (parenthesized_expression "(uVar11 - 2 < uVar15)" (( "(") (binary_expression "uVar11 - 2 < uVar15" (binary_expression "uVar11 - 2" (identifier "uVar11") (- "-") (number_literal "2")) (< "<") (identifier "uVar15")) () ")")) (|| "||") (parenthesized_expression "(3 < uVar15 - 1)" (( "(") (binary_expression "3 < uVar15 - 1" (number_literal "3") (< "<") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1"))) () ")"))) () ")")) (compound_statement "{\n          lVar14 = 2;\n          local_48 = 0xffffffff;\n        }" ({ "{") (expression_statement "lVar14 = 2;" (assignment_expression "lVar14 = 2" (identifier "lVar14") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" (identifier "local_48") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" (else "else") (compound_statement "{\n          lVar14 = uVar15 + 2;\n          local_48 = (ulong)param_1[2];\n          if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }\n          local_48 = local_48 + lVar14;\n        }" ({ "{") (expression_statement "lVar14 = uVar15 + 2;" (assignment_expression "lVar14 = uVar15 + 2" (identifier "lVar14") (= "=") (binary_expression "uVar15 + 2" (identifier "uVar15") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_48 = (ulong)param_1[2];" (assignment_expression "local_48 = (ulong)param_1[2]" (identifier "local_48") (= "=") (cast_expression "(ulong)param_1[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (uVar15 != 1) {\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }" (if "if") (parenthesized_expression "(uVar15 != 1)" (( "(") (binary_expression "uVar15 != 1" (identifier "uVar15") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n            uVar3 = CONCAT11(param_1[2],param_1[3]);\n            local_48 = (ulong)uVar3;\n            if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }\n          }" ({ "{") (expression_statement "uVar3 = CONCAT11(param_1[2],param_1[3]);" (assignment_expression "uVar3 = CONCAT11(param_1[2],param_1[3])" (identifier "uVar3") (= "=") (call_expression "CONCAT11(param_1[2],param_1[3])" (identifier "CONCAT11") (argument_list "(param_1[2],param_1[3])" (( "(") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (, ",") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) () ")")))) (; ";")) (expression_statement "local_48 = (ulong)uVar3;" (assignment_expression "local_48 = (ulong)uVar3" (identifier "local_48") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (if_statement "if (uVar15 != 2) {\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }" (if "if") (parenthesized_expression "(uVar15 != 2)" (( "(") (binary_expression "uVar15 != 2" (identifier "uVar15") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n              uVar4 = CONCAT21(uVar3,param_1[4]);\n              local_48 = (ulong)uVar4;\n              if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }\n            }" ({ "{") (expression_statement "uVar4 = CONCAT21(uVar3,param_1[4]);" (assignment_expression "uVar4 = CONCAT21(uVar3,param_1[4])" (identifier "uVar4") (= "=") (call_expression "CONCAT21(uVar3,param_1[4])" (identifier "CONCAT21") (argument_list "(uVar3,param_1[4])" (( "(") (identifier "uVar3") (, ",") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) () ")")))) (; ";")) (expression_statement "local_48 = (ulong)uVar4;" (assignment_expression "local_48 = (ulong)uVar4" (identifier "local_48") (= "=") (cast_expression "(ulong)uVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar4"))) (; ";")) (if_statement "if (uVar15 != 3) {\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }" (if "if") (parenthesized_expression "(uVar15 != 3)" (( "(") (binary_expression "uVar15 != 3" (identifier "uVar15") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);\n              }" ({ "{") (expression_statement "local_48 = (ulong)CONCAT31(uVar4,param_1[5]);" (assignment_expression "local_48 = (ulong)CONCAT31(uVar4,param_1[5])" (identifier "local_48") (= "=") (cast_expression "(ulong)CONCAT31(uVar4,param_1[5])" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (call_expression "CONCAT31(uVar4,param_1[5])" (identifier "CONCAT31") (argument_list "(uVar4,param_1[5])" (( "(") (identifier "uVar4") (, ",") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "local_48 = local_48 + lVar14;" (assignment_expression "local_48 = local_48 + lVar14" (identifier "local_48") (= "=") (binary_expression "local_48 + lVar14" (identifier "local_48") (+ "+") (identifier "lVar14"))) (; ";")) (} "}")))) (} "}")))) (if_statement "if (uVar11 < local_48) goto LAB_00173b43;" (if "if") (parenthesized_expression "(uVar11 < local_48)" (( "(") (binary_expression "uVar11 < local_48" (identifier "uVar11") (< "<") (identifier "local_48")) () ")")) (goto_statement "goto LAB_00173b43;" (goto "goto") (statement_identifier "LAB_00173b43") (; ";"))) (expression_statement "iVar7 = FUN_00173800(&local_50);" (assignment_expression "iVar7 = FUN_00173800(&local_50)" (identifier "iVar7") (= "=") (call_expression "FUN_00173800(&local_50)" (identifier "FUN_00173800") (argument_list "(&local_50)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) () ")")))) (; ";")) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" (identifier "uVar11") (= "=") (identifier "local_48")) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (expression_statement "puVar6 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar6 = PTR_ltc_mp_001ddec0" (identifier "puVar6") (= "=") (identifier "PTR_ltc_mp_001ddec0")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (if_statement "if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }\n      else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" (if "if") (parenthesized_expression "(((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2))" (( "(") (binary_expression "((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)" (parenthesized_expression "((bVar1 & 0x20) == 0)" (( "(") (binary_expression "(bVar1 & 0x20) == 0" (parenthesized_expression "(bVar1 & 0x20)" (( "(") (binary_expression "bVar1 & 0x20" (identifier "bVar1") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar12 - 0x30 < 2)" (( "(") (binary_expression "uVar12 - 0x30 < 2" (binary_expression "uVar12 - 0x30" (identifier "uVar12") (- "-") (number_literal "0x30")) (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n        if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }\n        switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }\n        uVar11 = local_48;\n        local_50 = piVar10;\n        if (iVar7 != 0) goto LAB_00173b4d;\n      }" ({ "{") (if_statement "if ((bVar1 & 0xc0) == 0x80) {\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }" (if "if") (parenthesized_expression "((bVar1 & 0xc0) == 0x80)" (( "(") (binary_expression "(bVar1 & 0xc0) == 0x80" (parenthesized_expression "(bVar1 & 0xc0)" (( "(") (binary_expression "bVar1 & 0xc0" (identifier "bVar1") (& "&") (number_literal "0xc0")) () ")")) (== "==") (number_literal "0x80")) () ")")) (compound_statement "{\n          local_50[6] = (uint)bVar1;\n          *local_50 = 0x13;\n          __size = local_48 - lVar14;\n          pvVar8 = calloc(1,__size);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          memcpy(pvVar8,param_1 + lVar14,__size);\n          *(size_t *)(piVar10 + 4) = __size;\n          goto LAB_00173a10;\n        }" ({ "{") (expression_statement "local_50[6] = (uint)bVar1;" (assignment_expression "local_50[6] = (uint)bVar1" (subscript_expression "local_50[6]" (identifier "local_50") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "*local_50 = 0x13;" (assignment_expression "*local_50 = 0x13" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "0x13")) (; ";")) (expression_statement "__size = local_48 - lVar14;" (assignment_expression "__size = local_48 - lVar14" (identifier "__size") (= "=") (binary_expression "local_48 - lVar14" (identifier "local_48") (- "-") (identifier "lVar14"))) (; ";")) (expression_statement "pvVar8 = calloc(1,__size);" (assignment_expression "pvVar8 = calloc(1,__size)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,__size)" (identifier "calloc") (argument_list "(1,__size)" (( "(") (number_literal "1") (, ",") (identifier "__size") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "memcpy(pvVar8,param_1 + lVar14,__size);" (call_expression "memcpy(pvVar8,param_1 + lVar14,__size)" (identifier "memcpy") (argument_list "(pvVar8,param_1 + lVar14,__size)" (( "(") (identifier "pvVar8") (, ",") (binary_expression "param_1 + lVar14" (identifier "param_1") (+ "+") (identifier "lVar14")) (, ",") (identifier "__size") () ")"))) (; ";")) (expression_statement "*(size_t *)(piVar10 + 4) = __size;" (assignment_expression "*(size_t *)(piVar10 + 4) = __size" (pointer_expression "*(size_t *)(piVar10 + 4)" (* "*") (cast_expression "(size_t *)(piVar10 + 4)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10 + 4)" (( "(") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "__size")) (; ";")) (goto_statement "goto LAB_00173a10;" (goto "goto") (statement_identifier "LAB_00173a10") (; ";")) (} "}"))) (switch_statement "switch(uVar12) {\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }" (switch "switch") (parenthesized_expression "(uVar12)" (( "(") (identifier "uVar12") () ")")) (compound_statement "{\n        default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;\n        case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;\n        case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;\n        case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;\n        case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;\n        case 0x20:\n        case 0x30:\n        case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;\n        }" ({ "{") (case_statement "default:\n          piVar10 = *(int **)(local_50 + 8);\n          if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }\n          goto joined_r0x001740db;" (default "default") (: ":") (expression_statement "piVar10 = *(int **)(local_50 + 8);" (assignment_expression "piVar10 = *(int **)(local_50 + 8)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(local_50 + 8)" (* "*") (cast_expression "(int **)(local_50 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_50 + 8)" (( "(") (binary_expression "local_50 + 8" (identifier "local_50") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (piVar10 != (int *)0x0) {\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }" (if "if") (parenthesized_expression "(piVar10 != (int *)0x0)" (( "(") (binary_expression "piVar10 != (int *)0x0" (identifier "piVar10") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            local_50 = piVar10;\n            free(*(void **)(piVar10 + 10));\n            local_50[10] = 0;\n            local_50[0xb] = 0;\n          }" ({ "{") (expression_statement "local_50 = piVar10;" (assignment_expression "local_50 = piVar10" (identifier "local_50") (= "=") (identifier "piVar10")) (; ";")) (expression_statement "free(*(void **)(piVar10 + 10));" (call_expression "free(*(void **)(piVar10 + 10))" (identifier "free") (argument_list "(*(void **)(piVar10 + 10))" (( "(") (pointer_expression "*(void **)(piVar10 + 10)" (* "*") (cast_expression "(void **)(piVar10 + 10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 10)" (( "(") (binary_expression "piVar10 + 10" (identifier "piVar10") (+ "+") (number_literal "10")) () ")")))) () ")"))) (; ";")) (expression_statement "local_50[10] = 0;" (assignment_expression "local_50[10] = 0" (subscript_expression "local_50[10]" (identifier "local_50") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50[0xb] = 0;" (assignment_expression "local_50[0xb] = 0" (subscript_expression "local_50[0xb]" (identifier "local_50") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (goto_statement "goto joined_r0x001740db;" (goto "goto") (statement_identifier "joined_r0x001740db") (; ";"))) (case_statement "case 1:\n          *local_50 = 1;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,4);\n          uVar11 = *param_2;\n          *(void **)(piVar10 + 2) = pvVar8;\n          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_boolean(&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "1") (: ":") (expression_statement "*local_50 = 1;" (assignment_expression "*local_50 = 1" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" (identifier "local_50") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" (identifier "local_50") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar8 = calloc(1,4);" (assignment_expression "pvVar8 = calloc(1,4)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,4)" (identifier "calloc") (argument_list "(1,4)" (( "(") (number_literal "1") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "uVar11 = *param_2;" (assignment_expression "uVar11 = *param_2" (identifier "uVar11") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (expression_statement "iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);" (assignment_expression "iVar7 = der_decode_boolean(param_1,uVar11,pvVar8)" (identifier "iVar7") (= "=") (call_expression "der_decode_boolean(param_1,uVar11,pvVar8)" (identifier "der_decode_boolean") (argument_list "(param_1,uVar11,pvVar8)" (( "(") (identifier "param_1") (, ",") (identifier "uVar11") (, ",") (identifier "pvVar8") () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_boolean(&local_48);" (assignment_expression "iVar7 = der_length_boolean(&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_boolean(&local_48)" (identifier "der_length_boolean") (argument_list "(&local_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n          *local_50 = 2;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);\n          piVar10 = local_50;\n          if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;\n          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "2") (: ":") (expression_statement "*local_50 = 2;" (assignment_expression "*local_50 = 2" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "2")) (; ";")) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" (identifier "local_50") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" (identifier "local_50") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);" (assignment_expression "iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(puVar6 + 0x10))(local_50 + 2)" (parenthesized_expression "(**(code **)(puVar6 + 0x10))" (( "(") (pointer_expression "**(code **)(puVar6 + 0x10)" (* "*") (pointer_expression "*(code **)(puVar6 + 0x10)" (* "*") (cast_expression "(code **)(puVar6 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + 0x10)" (( "(") (binary_expression "puVar6 + 0x10" (identifier "puVar6") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if ((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;" (if "if") (parenthesized_expression "((iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0))" (( "(") (binary_expression "(iVar7 != 0) ||\n             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0)" (( "(") (comma_expression "iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),\n             piVar10 = local_50, iVar7 != 0" (assignment_expression "iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2))" (identifier "iVar7") (= "=") (call_expression "der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2))" (identifier "der_decode_integer") (argument_list "(param_1,*param_2,*(undefined8 *)(local_50 + 2))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) () ")")))) (, ",") (comma_expression "piVar10 = local_50, iVar7 != 0" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_integer(*(undefined8 *)(local_50 + 2),&local_48)" (identifier "der_length_integer") (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n          *local_50 = 4;\n          *(ulong *)(local_50 + 4) = local_48 * 8;\n          pvVar8 = calloc(1,local_48 * 8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "3") (: ":") (expression_statement "*local_50 = 4;" (assignment_expression "*local_50 = 4" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "4")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48 * 8;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48 * 8" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "local_48 * 8" (identifier "local_48") (* "*") (number_literal "8"))) (; ";")) (expression_statement "pvVar8 = calloc(1,local_48 * 8);" (assignment_expression "pvVar8 = calloc(1,local_48 * 8)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,local_48 * 8)" (identifier "calloc") (argument_list "(1,local_48 * 8)" (( "(") (number_literal "1") (, ",") (binary_expression "local_48 * 8" (identifier "local_48") (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "iVar7") (= "=") (call_expression "der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "der_decode_bit_string") (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "pvVar8") (, ",") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48)" (identifier "der_length_bit_string") (argument_list "(*(undefined8 *)(local_50 + 4),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 4)" (* "*") (cast_expression "(undefined8 *)(local_50 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n          *local_50 = 5;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "4") (: ":") (expression_statement "*local_50 = 5;" (assignment_expression "*local_50 = 5" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "5")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,local_48)" (identifier "calloc") (argument_list "(1,local_48)" (( "(") (number_literal "1") (, ",") (identifier "local_48") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "iVar7") (= "=") (call_expression "der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "der_decode_octet_string") (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "pvVar8") (, ",") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48)" (identifier "der_length_octet_string") (argument_list "(*(undefined8 *)(local_50 + 4),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 4)" (* "*") (cast_expression "(undefined8 *)(local_50 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 5:\n          if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }\n          iVar7 = 7;\n          goto LAB_00173b4d;" (case "case") (number_literal "5") (: ":") (if_statement "if ((*param_1 == 5) && (param_1[1] == 0)) {\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }" (if "if") (parenthesized_expression "((*param_1 == 5) && (param_1[1] == 0))" (( "(") (binary_expression "(*param_1 == 5) && (param_1[1] == 0)" (parenthesized_expression "(*param_1 == 5)" (( "(") (binary_expression "*param_1 == 5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "5")) () ")")) (&& "&&") (parenthesized_expression "(param_1[1] == 0)" (( "(") (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            *local_50 = 6;\n            local_50[2] = 0;\n            local_50[3] = 0;\n            local_50[4] = 0;\n            local_50[5] = 0;\n            local_48 = 2;\n            uVar11 = 2;\n            goto LAB_00173a10;\n          }" ({ "{") (expression_statement "*local_50 = 6;" (assignment_expression "*local_50 = 6" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "6")) (; ";")) (expression_statement "local_50[2] = 0;" (assignment_expression "local_50[2] = 0" (subscript_expression "local_50[2]" (identifier "local_50") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50[3] = 0;" (assignment_expression "local_50[3] = 0" (subscript_expression "local_50[3]" (identifier "local_50") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50[4] = 0;" (assignment_expression "local_50[4] = 0" (subscript_expression "local_50[4]" (identifier "local_50") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" (identifier "local_50") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" (identifier "local_48") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" (identifier "uVar11") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_00173a10;" (goto "goto") (statement_identifier "LAB_00173a10") (; ";")) (} "}"))) (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" (identifier "iVar7") (= "=") (number_literal "7")) (; ";")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (case_statement "case 6:\n          *local_50 = 7;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(local_48,8);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }\n          goto LAB_00173b4d;" (case "case") (number_literal "6") (: ":") (expression_statement "*local_50 = 7;" (assignment_expression "*local_50 = 7" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "7")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "pvVar8 = calloc(local_48,8);" (assignment_expression "pvVar8 = calloc(local_48,8)" (identifier "pvVar8") (= "=") (call_expression "calloc(local_48,8)" (identifier "calloc") (argument_list "(local_48,8)" (( "(") (identifier "local_48") (, ",") (number_literal "8") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "iVar7") (= "=") (call_expression "der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "der_decode_object_identifier") (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "pvVar8") (, ",") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if ((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)) {\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" (if "if") (parenthesized_expression "((iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0))" (( "(") (binary_expression "(iVar7 == 0) &&\n             (iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)" (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0)" (( "(") (comma_expression "iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48), piVar10 = local_50, iVar7 == 0" (assignment_expression "iVar7 = der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_object_identifier\n                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" (identifier "der_length_object_identifier") (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),\n                                 &local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(local_50 + 4)" (* "*") (cast_expression "(undefined8 *)(local_50 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (, ",") (comma_expression "piVar10 = local_50, iVar7 == 0" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (, ",") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);\n            uVar11 = local_48;\n            if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }\n            goto LAB_00173a10;\n          }" ({ "{") (expression_statement "pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);" (assignment_expression "pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" (identifier "pvVar8") (= "=") (call_expression "realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" (identifier "realloc") (argument_list "(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8)" (( "(") (pointer_expression "*(void **)(local_50 + 2)" (* "*") (cast_expression "(void **)(local_50 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (binary_expression "*(long *)(local_50 + 4) * 8" (pointer_expression "*(long *)(local_50 + 4)" (* "*") (cast_expression "(long *)(local_50 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" (identifier "uVar11") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (pvVar8 != (void *)0x0) {\n              *(void **)(local_50 + 2) = pvVar8;\n            }" (if "if") (parenthesized_expression "(pvVar8 != (void *)0x0)" (( "(") (binary_expression "pvVar8 != (void *)0x0" (identifier "pvVar8") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              *(void **)(local_50 + 2) = pvVar8;\n            }" ({ "{") (expression_statement "*(void **)(local_50 + 2) = pvVar8;" (assignment_expression "*(void **)(local_50 + 2) = pvVar8" (pointer_expression "*(void **)(local_50 + 2)" (* "*") (cast_expression "(void **)(local_50 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (} "}"))) (goto_statement "goto LAB_00173a10;" (goto "goto") (statement_identifier "LAB_00173a10") (; ";")) (} "}"))) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (case_statement "case 0xc:\n          *local_50 = 10;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(4,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "0xc") (: ":") (expression_statement "*local_50 = 10;" (assignment_expression "*local_50 = 10" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "10")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "pvVar8 = calloc(4,local_48);" (assignment_expression "pvVar8 = calloc(4,local_48)" (identifier "pvVar8") (= "=") (call_expression "calloc(4,local_48)" (identifier "calloc") (argument_list "(4,local_48)" (( "(") (number_literal "4") (, ",") (identifier "local_48") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "iVar7") (= "=") (call_expression "der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "der_decode_utf8_string") (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "pvVar8") (, ",") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_utf8_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "der_length_utf8_string") (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(local_50 + 4)" (* "*") (cast_expression "(undefined8 *)(local_50 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x13:\n          *local_50 = 9;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "0x13") (: ":") (expression_statement "*local_50 = 9;" (assignment_expression "*local_50 = 9" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "9")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,local_48)" (identifier "calloc") (argument_list "(1,local_48)" (( "(") (number_literal "1") (, ",") (identifier "local_48") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "iVar7") (= "=") (call_expression "der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "der_decode_printable_string") (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "pvVar8") (, ",") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_printable_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "der_length_printable_string") (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(local_50 + 4)" (* "*") (cast_expression "(undefined8 *)(local_50 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x14:\n          *local_50 = 0x11;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "0x14") (: ":") (expression_statement "*local_50 = 0x11;" (assignment_expression "*local_50 = 0x11" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "0x11")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,local_48)" (identifier "calloc") (argument_list "(1,local_48)" (( "(") (number_literal "1") (, ",") (identifier "local_48") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "iVar7") (= "=") (call_expression "der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "der_decode_teletex_string") (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "pvVar8") (, ",") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_teletex_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "der_length_teletex_string") (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(local_50 + 4)" (* "*") (cast_expression "(undefined8 *)(local_50 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x16:\n          *local_50 = 8;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,local_48);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "0x16") (: ":") (expression_statement "*local_50 = 8;" (assignment_expression "*local_50 = 8" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "pvVar8 = calloc(1,local_48);" (assignment_expression "pvVar8 = calloc(1,local_48)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,local_48)" (identifier "calloc") (argument_list "(1,local_48)" (( "(") (number_literal "1") (, ",") (identifier "local_48") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);" (assignment_expression "iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "iVar7") (= "=") (call_expression "der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4)" (identifier "der_decode_ia5_string") (argument_list "(param_1,*param_2,pvVar8,piVar10 + 4)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "pvVar8") (, ",") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);" (assignment_expression "iVar7 = der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_ia5_string\n                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (identifier "der_length_ia5_string") (argument_list "(*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(local_50 + 4)" (* "*") (cast_expression "(undefined8 *)(local_50 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x17:\n          *local_50 = 0xb;\n          local_50[4] = 1;\n          local_50[5] = 0;\n          pvVar8 = calloc(1,0x24);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          local_48 = *param_2;\n          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "0x17") (: ":") (expression_statement "*local_50 = 0xb;" (assignment_expression "*local_50 = 0xb" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "0xb")) (; ";")) (expression_statement "local_50[4] = 1;" (assignment_expression "local_50[4] = 1" (subscript_expression "local_50[4]" (identifier "local_50") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50[5] = 0;" (assignment_expression "local_50[5] = 0" (subscript_expression "local_50[5]" (identifier "local_50") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar8 = calloc(1,0x24);" (assignment_expression "pvVar8 = calloc(1,0x24)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,0x24)" (identifier "calloc") (argument_list "(1,0x24)" (( "(") (number_literal "1") (, ",") (number_literal "0x24") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "local_48 = *param_2;" (assignment_expression "local_48 = *param_2" (identifier "local_48") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);" (assignment_expression "iVar7 = der_decode_utctime(param_1,&local_48,pvVar8)" (identifier "iVar7") (= "=") (call_expression "der_decode_utctime(param_1,&local_48,pvVar8)" (identifier "der_decode_utctime") (argument_list "(param_1,&local_48,pvVar8)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "pvVar8") () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48)" (identifier "der_length_utctime") (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x18:\n          *local_50 = 0x14;\n          *(ulong *)(local_50 + 4) = local_48;\n          pvVar8 = calloc(1,0x28);\n          *(void **)(piVar10 + 2) = pvVar8;\n          if (pvVar8 == (void *)0x0) goto LAB_00174142;\n          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);\n          piVar10 = local_50;\n          if (iVar7 != 0) goto LAB_00173b4d;\n          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);\n          piVar10 = local_50;\n          break;" (case "case") (number_literal "0x18") (: ":") (expression_statement "*local_50 = 0x14;" (assignment_expression "*local_50 = 0x14" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "0x14")) (; ";")) (expression_statement "*(ulong *)(local_50 + 4) = local_48;" (assignment_expression "*(ulong *)(local_50 + 4) = local_48" (pointer_expression "*(ulong *)(local_50 + 4)" (* "*") (cast_expression "(ulong *)(local_50 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 4)" (( "(") (binary_expression "local_50 + 4" (identifier "local_50") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "local_48")) (; ";")) (expression_statement "pvVar8 = calloc(1,0x28);" (assignment_expression "pvVar8 = calloc(1,0x28)" (identifier "pvVar8") (= "=") (call_expression "calloc(1,0x28)" (identifier "calloc") (argument_list "(1,0x28)" (( "(") (number_literal "1") (, ",") (number_literal "0x28") () ")")))) (; ";")) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) goto LAB_00174142;" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174142;" (goto "goto") (statement_identifier "LAB_00174142") (; ";"))) (expression_statement "iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);" (assignment_expression "iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8)" (identifier "iVar7") (= "=") (call_expression "der_decode_generalizedtime(param_1,&local_48,pvVar8)" (identifier "der_decode_generalizedtime") (argument_list "(param_1,&local_48,pvVar8)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "pvVar8") () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);" (assignment_expression "iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48)" (identifier "iVar7") (= "=") (call_expression "der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48)" (identifier "der_length_generalizedtime") (argument_list "(*(undefined8 *)(local_50 + 2),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(local_50 + 2)" (* "*") (cast_expression "(undefined8 *)(local_50 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 2)" (( "(") (binary_expression "local_50 + 2" (identifier "local_50") (+ "+") (number_literal "2")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x20:" (case "case") (number_literal "0x20") (: ":")) (case_statement "case 0x30:" (case "case") (number_literal "0x30") (: ":")) (case_statement "case 0x31:\n          if (uVar12 == 0x20) goto LAB_00173a94;\n          *local_50 = (uVar12 != 0x30) + 0xd;\n          goto LAB_00173a9b;" (case "case") (number_literal "0x31") (: ":") (if_statement "if (uVar12 == 0x20) goto LAB_00173a94;" (if "if") (parenthesized_expression "(uVar12 == 0x20)" (( "(") (binary_expression "uVar12 == 0x20" (identifier "uVar12") (== "==") (number_literal "0x20")) () ")")) (goto_statement "goto LAB_00173a94;" (goto "goto") (statement_identifier "LAB_00173a94") (; ";"))) (expression_statement "*local_50 = (uVar12 != 0x30) + 0xd;" (assignment_expression "*local_50 = (uVar12 != 0x30) + 0xd" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (binary_expression "(uVar12 != 0x30) + 0xd" (parenthesized_expression "(uVar12 != 0x30)" (( "(") (binary_expression "uVar12 != 0x30" (identifier "uVar12") (!= "!=") (number_literal "0x30")) () ")")) (+ "+") (number_literal "0xd"))) (; ";")) (goto_statement "goto LAB_00173a9b;" (goto "goto") (statement_identifier "LAB_00173a9b") (; ";"))) (} "}"))) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" (identifier "uVar11") (= "=") (identifier "local_48")) (; ";")) (expression_statement "local_50 = piVar10;" (assignment_expression "local_50 = piVar10" (identifier "local_50") (= "=") (identifier "piVar10")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (} "}")) (else_clause "else {\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" (else "else") (compound_statement "{\n        local_50[6] = (uint)bVar1;\nLAB_00173a94:\n        *local_50 = 0x12;\nLAB_00173a9b:\n        pvVar8 = malloc(local_48);\n        *(void **)(piVar10 + 2) = pvVar8;\n        if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }\n        pbVar13 = param_1 + lVar14;\n        memcpy(pvVar8,param_1,uVar11);\n        *(ulong *)(piVar10 + 4) = uVar11;\n        local_48 = uVar11 - lVar14;\n        *param_2 = *param_2 - lVar14;\n        iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);\n        piVar10 = local_50;\n        if (iVar7 != 0) goto LAB_00173b4d;\n        uVar16 = uVar16 + lVar14;\n        lVar14 = *(long *)(local_50 + 0xc);\n        param_1 = pbVar13;\n        uVar11 = local_48;\n        if (lVar14 == 0) goto LAB_00173a10;\n        *(int **)(lVar14 + 0x38) = local_50;\n        uVar12 = 0;\n        do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);\n        if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }\n      }" ({ "{") (expression_statement "local_50[6] = (uint)bVar1;" (assignment_expression "local_50[6] = (uint)bVar1" (subscript_expression "local_50[6]" (identifier "local_50") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (labeled_statement "LAB_00173a94:\n        *local_50 = 0x12;" (statement_identifier "LAB_00173a94") (: ":") (expression_statement "*local_50 = 0x12;" (assignment_expression "*local_50 = 0x12" (pointer_expression "*local_50" (* "*") (identifier "local_50")) (= "=") (number_literal "0x12")) (; ";"))) (labeled_statement "LAB_00173a9b:\n        pvVar8 = malloc(local_48);" (statement_identifier "LAB_00173a9b") (: ":") (expression_statement "pvVar8 = malloc(local_48);" (assignment_expression "pvVar8 = malloc(local_48)" (identifier "pvVar8") (= "=") (call_expression "malloc(local_48)" (identifier "malloc") (argument_list "(local_48)" (( "(") (identifier "local_48") () ")")))) (; ";"))) (expression_statement "*(void **)(piVar10 + 2) = pvVar8;" (assignment_expression "*(void **)(piVar10 + 2) = pvVar8" (pointer_expression "*(void **)(piVar10 + 2)" (* "*") (cast_expression "(void **)(piVar10 + 2)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 2)" (( "(") (binary_expression "piVar10 + 2" (identifier "piVar10") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "pvVar8")) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) {\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00174142:\n          iVar7 = 0xd;\n          goto LAB_00173b4d;\n        }" ({ "{") (labeled_statement "LAB_00174142:\n          iVar7 = 0xd;" (statement_identifier "LAB_00174142") (: ":") (expression_statement "iVar7 = 0xd;" (assignment_expression "iVar7 = 0xd" (identifier "iVar7") (= "=") (number_literal "0xd")) (; ";"))) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";")) (} "}"))) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" (identifier "pbVar13") (= "=") (binary_expression "param_1 + lVar14" (identifier "param_1") (+ "+") (identifier "lVar14"))) (; ";")) (expression_statement "memcpy(pvVar8,param_1,uVar11);" (call_expression "memcpy(pvVar8,param_1,uVar11)" (identifier "memcpy") (argument_list "(pvVar8,param_1,uVar11)" (( "(") (identifier "pvVar8") (, ",") (identifier "param_1") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "*(ulong *)(piVar10 + 4) = uVar11;" (assignment_expression "*(ulong *)(piVar10 + 4) = uVar11" (pointer_expression "*(ulong *)(piVar10 + 4)" (* "*") (cast_expression "(ulong *)(piVar10 + 4)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10 + 4)" (( "(") (binary_expression "piVar10 + 4" (identifier "piVar10") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "local_48 = uVar11 - lVar14;" (assignment_expression "local_48 = uVar11 - lVar14" (identifier "local_48") (= "=") (binary_expression "uVar11 - lVar14" (identifier "uVar11") (- "-") (identifier "lVar14"))) (; ";")) (expression_statement "*param_2 = *param_2 - lVar14;" (assignment_expression "*param_2 = *param_2 - lVar14" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 - lVar14" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (- "-") (identifier "lVar14"))) (; ";")) (expression_statement "iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc);" (assignment_expression "iVar7 = der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc)" (identifier "iVar7") (= "=") (call_expression "der_decode_sequence_flexi(pbVar13,&local_48,piVar10 + 0xc)" (identifier "der_decode_sequence_flexi") (argument_list "(pbVar13,&local_48,piVar10 + 0xc)" (( "(") (identifier "pbVar13") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (binary_expression "piVar10 + 0xc" (identifier "piVar10") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00173b4d;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";"))) (expression_statement "uVar16 = uVar16 + lVar14;" (assignment_expression "uVar16 = uVar16 + lVar14" (identifier "uVar16") (= "=") (binary_expression "uVar16 + lVar14" (identifier "uVar16") (+ "+") (identifier "lVar14"))) (; ";")) (expression_statement "lVar14 = *(long *)(local_50 + 0xc);" (assignment_expression "lVar14 = *(long *)(local_50 + 0xc)" (identifier "lVar14") (= "=") (pointer_expression "*(long *)(local_50 + 0xc)" (* "*") (cast_expression "(long *)(local_50 + 0xc)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + 0xc)" (( "(") (binary_expression "local_50 + 0xc" (identifier "local_50") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "param_1 = pbVar13;" (assignment_expression "param_1 = pbVar13" (identifier "param_1") (= "=") (identifier "pbVar13")) (; ";")) (expression_statement "uVar11 = local_48;" (assignment_expression "uVar11 = local_48" (identifier "uVar11") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (lVar14 == 0) goto LAB_00173a10;" (if "if") (parenthesized_expression "(lVar14 == 0)" (( "(") (binary_expression "lVar14 == 0" (identifier "lVar14") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00173a10;" (goto "goto") (statement_identifier "LAB_00173a10") (; ";"))) (expression_statement "*(int **)(lVar14 + 0x38) = local_50;" (assignment_expression "*(int **)(lVar14 + 0x38) = local_50" (pointer_expression "*(int **)(lVar14 + 0x38)" (* "*") (cast_expression "(int **)(lVar14 + 0x38)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar14 + 0x38)" (( "(") (binary_expression "lVar14 + 0x38" (identifier "lVar14") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "local_50")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        } while (lVar14 != 0);" (do "do") (compound_statement "{\n          lVar14 = *(long *)(lVar14 + 0x30);\n          uVar12 = uVar12 + 1;\n        }" ({ "{") (expression_statement "lVar14 = *(long *)(lVar14 + 0x30);" (assignment_expression "lVar14 = *(long *)(lVar14 + 0x30)" (identifier "lVar14") (= "=") (pointer_expression "*(long *)(lVar14 + 0x30)" (* "*") (cast_expression "(long *)(lVar14 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar14 + 0x30)" (( "(") (binary_expression "lVar14 + 0x30" (identifier "lVar14") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar14 != 0)" (( "(") (binary_expression "lVar14 != 0" (identifier "lVar14") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (0x1e < uVar12) {\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }" (if "if") (parenthesized_expression "(0x1e < uVar12)" (( "(") (binary_expression "0x1e < uVar12" (number_literal "0x1e") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n          iVar7 = 1;\n          goto LAB_00173b4d;\n        }" ({ "{") (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00173b4d;" (goto "goto") (statement_identifier "LAB_00173b4d") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00173a10:\n      uVar16 = uVar16 + uVar11;" (statement_identifier "LAB_00173a10") (: ":") (expression_statement "uVar16 = uVar16 + uVar11;" (assignment_expression "uVar16 = uVar16 + uVar11" (identifier "uVar16") (= "=") (binary_expression "uVar16 + uVar11" (identifier "uVar16") (+ "+") (identifier "uVar11"))) (; ";"))) (expression_statement "param_1 = param_1 + uVar11;" (assignment_expression "param_1 = param_1 + uVar11" (identifier "param_1") (= "=") (binary_expression "param_1 + uVar11" (identifier "param_1") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "uVar11 = *param_2 - uVar11;" (assignment_expression "uVar11 = *param_2 - uVar11" (identifier "uVar11") (= "=") (binary_expression "*param_2 - uVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "*param_2 = uVar11;" (assignment_expression "*param_2 = uVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (labeled_statement "joined_r0x001740db:\n    if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" (statement_identifier "joined_r0x001740db") (: ":") (if_statement "if (uVar16 != 0) {\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(uVar16 != 0)" (( "(") (binary_expression "uVar16 != 0" (identifier "uVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar5 = false;\n      piVar10 = local_50;\n      do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );\n    }" ({ "{") (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "piVar10 = local_50;" (assignment_expression "piVar10 = local_50" (identifier "piVar10") (= "=") (identifier "local_50")) (; ";")) (do_statement "do {\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      } while( true );" (do "do") (compound_statement "{\n        piVar9 = *(int **)(piVar10 + 0xe);\n        if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }\n        bVar5 = true;\n        piVar10 = piVar9;\n      }" ({ "{") (expression_statement "piVar9 = *(int **)(piVar10 + 0xe);" (assignment_expression "piVar9 = *(int **)(piVar10 + 0xe)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(piVar10 + 0xe)" (* "*") (cast_expression "(int **)(piVar10 + 0xe)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 0xe)" (( "(") (binary_expression "piVar10 + 0xe" (identifier "piVar10") (+ "+") (number_literal "0xe")) () ")"))))) (; ";")) (if_statement "if (*(int **)(piVar10 + 8) == (int *)0x0) {\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }\n        else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" (if "if") (parenthesized_expression "(*(int **)(piVar10 + 8) == (int *)0x0)" (( "(") (binary_expression "*(int **)(piVar10 + 8) == (int *)0x0" (pointer_expression "*(int **)(piVar10 + 8)" (* "*") (cast_expression "(int **)(piVar10 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 8)" (( "(") (binary_expression "piVar10 + 8" (identifier "piVar10") (+ "+") (number_literal "8")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (piVar9 == (int *)0x0) goto LAB_00174128;\n        }" ({ "{") (if_statement "if (piVar9 == (int *)0x0) goto LAB_00174128;" (if "if") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00174128;" (goto "goto") (statement_identifier "LAB_00174128") (; ";"))) (} "}")) (else_clause "else if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" (else "else") (if_statement "if (piVar9 == (int *)0x0) {\n          piVar9 = *(int **)(piVar10 + 8);\n        }" (if "if") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          piVar9 = *(int **)(piVar10 + 8);\n        }" ({ "{") (expression_statement "piVar9 = *(int **)(piVar10 + 8);" (assignment_expression "piVar9 = *(int **)(piVar10 + 8)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(piVar10 + 8)" (* "*") (cast_expression "(int **)(piVar10 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar10 + 8)" (( "(") (binary_expression "piVar10 + 8" (identifier "piVar10") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))))) (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" (identifier "bVar5") (= "=") (true "true")) (; ";")) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" (identifier "piVar10") (= "=") (identifier "piVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = local_50;" (assignment_expression "*param_3 = local_50" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*param_2 = uVar16;" (assignment_expression "*param_2 = uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar16")) (; ";")) (labeled_statement "LAB_00173b5b:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }" (statement_identifier "LAB_00173b5b") (: ":") (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return iVar7;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return iVar7;\n  }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}")))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00174128:\n  piVar9 = local_50;" (statement_identifier "LAB_00174128") (: ":") (expression_statement "piVar9 = local_50;" (assignment_expression "piVar9 = local_50" (identifier "piVar9") (= "=") (identifier "local_50")) (; ";"))) (if_statement "if (bVar5) {\n    piVar9 = piVar10;\n  }" (if "if") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (compound_statement "{\n    piVar9 = piVar10;\n  }" ({ "{") (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" (identifier "piVar9") (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = piVar9;" (assignment_expression "*param_3 = piVar9" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*param_2 = uVar16;" (assignment_expression "*param_2 = uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar16")) (; ";")) (goto_statement "goto LAB_00173b5b;" (goto "goto") (statement_identifier "LAB_00173b5b") (; ";")) (} "}")))

int function_1(type_1 *var_2,type_2 *var_4,type_3 **var_5)

{
  type_4 var_18;
  type_4 var_10;
  type_5 uVar3;
  type_6 uVar4;
  bool bVar5;
  type_7 *var_27;
  type_8 var_8;
  void *var_21;
  type_9 *var_23;
  type_10 *var_51;
  type_11 *var_48;
  type_1 *var_30;
  type_8 *var_39;
  type_2 *var_35;
  int *out_03;
  type_3 *plVar11;
  type_2 var_6;
  type_2 var_19;
  type_4 *in_00;
  long var_16;
  size_t __size;
  type_2 var_11;
  type_2 var_56;
  type_2 var_15;
  type_3 *plVar18;
  long var_1;
  type_3 *l;
  type_2 var_17;
  long var_57;
  
  var_57 = *(long *)(var_1 + 0x28);
  if (var_2 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("in != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x56);
  }
  if (var_4 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("inlen != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x57);
  }
  if (var_5 == (type_3 **)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("out != NULL","src/pk/asn1/der/sequence/der_decode_sequence_flexi.c",0x58);
  }
  l = (type_3 *)0x0;
  var_6 = *var_4;
  if (var_6 == 0) {
    var_8 = var_7(&l);
    plVar11 = l;
    if (var_8 != L'\0') {
LAB_00173b4d:
      var_9(plVar11);
      goto LAB_00173b5b;
    }
    var_6 = *var_4;
    if (var_6 != 0) goto LAB_001738bc;
    var_56 = 0;
  }
  else {
LAB_001738bc:
    var_56 = 0;
    do {
      var_18 = *var_2;
      var_19 = (type_2)var_18;
      if (var_6 < 2) {
        var_17 = 0xffffffff;
LAB_00173b43:
        var_8 = L'\a';
        plVar11 = l;
        goto LAB_00173b4d;
      }
      var_10 = var_2[1];
      if ((type_2)var_10 < 0x80) {
        var_17 = (type_2)var_10 + 2;
        var_16 = 2;
      }
      else {
        var_11 = (type_2)(var_10 & 0x7f);
        if ((var_6 - 2 < var_11) || (3 < var_11 - 1)) {
          var_16 = 2;
          var_17 = 0xffffffff;
        }
        else {
          var_16 = var_11 + 2;
          var_15 = (type_2)var_2[2];
          if (var_11 != 1) {
            uVar3 = var_12(var_2[2],var_2[3]);
            var_15 = (type_2)uVar3;
            if (var_11 != 2) {
              uVar4 = var_13(uVar3,var_2[4]);
              var_15 = (type_2)uVar4;
              if (var_11 != 3) {
                var_15 = (type_2)var_14(uVar4,var_2[5]);
              }
            }
          }
          var_17 = var_15 + var_16;
        }
      }
      if (var_6 < var_17) goto LAB_00173b43;
      var_8 = var_7(&l);
      var_6 = var_17;
      plVar11 = l;
      var_27 = PTR_ltc_mp_001ddec0;
      if (var_8 != L'\0') goto LAB_00173b4d;
      if (((var_18 & 0x20) == 0) || (var_19 - 0x30 < 2)) {
        if ((var_18 & 0xc0) == 0x80) {
          l->used = (type_12)var_18;
          l->type = LTC_ASN1_CONTEXT_SPECIFIC;
          __size = var_17 - var_16;
          var_21 = var_20(1,__size);
          plVar11->data = var_21;
          if (var_21 == (void *)0x0) goto LAB_00174142;
          var_22(var_21,var_2 + var_16,__size);
          plVar11->size = __size;
          goto LAB_00173a10;
        }
        switch(var_19) {
        default:
          var_23 = l->prev;
          if (var_23 != (type_9 *)0x0) {
            l = var_23;
            var_24(var_23->next);
            l->next = (type_9 *)0x0;
          }
          goto joined_r0x001740db;
        case 1:
          l->type = LTC_ASN1_BOOLEAN;
          l->size = 1;
          out_03 = (int *)var_20(1,4);
          var_6 = *var_4;
          plVar11->data = out_03;
          var_8 = var_25(var_2,var_6,out_03);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_26(&var_17);
          plVar11 = l;
          break;
        case 2:
          l->type = LTC_ASN1_INTEGER;
          l->size = 1;
          var_8 = (**(type_13 **)(var_27 + 0x10))(&l->data);
          plVar11 = l;
          if ((var_8 != L'\0') ||
             (var_8 = var_28(var_2,*var_4,l->data), plVar11 = l, var_8 != L'\0'))
          goto LAB_00173b4d;
          var_8 = var_29(l->data,&var_17);
          plVar11 = l;
          break;
        case 3:
          l->type = LTC_ASN1_BIT_STRING;
          l->size = var_17 * 8;
          var_30 = (type_1 *)var_20(1,var_17 * 8);
          plVar11->data = var_30;
          if (var_30 == (type_1 *)0x0) goto LAB_00174142;
          var_8 = var_31(var_2,*var_4,var_30,&plVar11->size);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_32(l->size,&var_17);
          plVar11 = l;
          break;
        case 4:
          l->type = LTC_ASN1_OCTET_STRING;
          l->size = var_17;
          var_30 = (type_1 *)var_20(1,var_17);
          plVar11->data = var_30;
          if (var_30 == (type_1 *)0x0) goto LAB_00174142;
          var_8 = var_33(var_2,*var_4,var_30,&plVar11->size);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_34(l->size,&var_17);
          plVar11 = l;
          break;
        case 5:
          if ((*var_2 == 5) && (var_2[1] == 0)) {
            l->type = LTC_ASN1_NULL;
            l->data = (void *)0x0;
            l->size = 0;
            var_17 = 2;
            var_6 = 2;
            goto LAB_00173a10;
          }
          var_8 = L'\a';
          goto LAB_00173b4d;
        case 6:
          l->type = LTC_ASN1_OBJECT_IDENTIFIER;
          l->size = var_17;
          var_35 = (type_2 *)var_20(var_17,8);
          plVar11->data = var_35;
          if (var_35 == (type_2 *)0x0) goto LAB_00174142;
          var_8 = var_36(var_2,*var_4,var_35,&plVar11->size);
          plVar11 = l;
          if ((var_8 == L'\0') &&
             (var_8 = var_37((type_2 *)l->data,l->size,&var_17), plVar11 = l,
             var_8 == L'\0')) {
            var_21 = var_38(l->data,l->size * 8);
            var_6 = var_17;
            if (var_21 != (void *)0x0) {
              l->data = var_21;
            }
            goto LAB_00173a10;
          }
          goto LAB_00173b4d;
        case 0xc:
          l->type = LTC_ASN1_UTF8_STRING;
          l->size = var_17;
          var_39 = (type_8 *)var_20(4,var_17);
          plVar11->data = var_39;
          if (var_39 == (type_8 *)0x0) goto LAB_00174142;
          var_8 = var_40(var_2,*var_4,var_39,&plVar11->size);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_41((type_8 *)l->data,l->size,&var_17);
          plVar11 = l;
          break;
        case 0x13:
          l->type = LTC_ASN1_PRINTABLE_STRING;
          l->size = var_17;
          var_30 = (type_1 *)var_20(1,var_17);
          plVar11->data = var_30;
          if (var_30 == (type_1 *)0x0) goto LAB_00174142;
          var_8 = var_42(var_2,*var_4,var_30,&plVar11->size);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_43((type_1 *)l->data,l->size,&var_17);
          plVar11 = l;
          break;
        case 0x14:
          l->type = LTC_ASN1_TELETEX_STRING;
          l->size = var_17;
          var_30 = (type_1 *)var_20(1,var_17);
          plVar11->data = var_30;
          if (var_30 == (type_1 *)0x0) goto LAB_00174142;
          var_8 = var_44(var_2,*var_4,var_30,&plVar11->size);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_45((type_1 *)l->data,l->size,&var_17);
          plVar11 = l;
          break;
        case 0x16:
          l->type = LTC_ASN1_IA5_STRING;
          l->size = var_17;
          var_30 = (type_1 *)var_20(1,var_17);
          plVar11->data = var_30;
          if (var_30 == (type_1 *)0x0) goto LAB_00174142;
          var_8 = var_46(var_2,*var_4,var_30,&plVar11->size);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_47((type_1 *)l->data,l->size,&var_17);
          plVar11 = l;
          break;
        case 0x17:
          l->type = LTC_ASN1_UTCTIME;
          l->size = 1;
          var_48 = (type_11 *)var_20(1,0x24);
          plVar11->data = var_48;
          if (var_48 == (type_11 *)0x0) goto LAB_00174142;
          var_17 = *var_4;
          var_8 = var_49(var_2,&var_17,var_48);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_50((type_11 *)l->data,&var_17);
          plVar11 = l;
          break;
        case 0x18:
          l->type = LTC_ASN1_GENERALIZEDTIME;
          l->size = var_17;
          var_51 = (type_10 *)var_20(1,0x28);
          plVar11->data = var_51;
          if (var_51 == (type_10 *)0x0) goto LAB_00174142;
          var_8 = var_52(var_2,&var_17,var_51);
          plVar11 = l;
          if (var_8 != L'\0') goto LAB_00173b4d;
          var_8 = var_53((type_10 *)l->data,&var_17);
          plVar11 = l;
          break;
        case 0x20:
        case 0x30:
        case 0x31:
          if (var_19 == 0x20) goto LAB_00173a94;
          l->type = (var_19 != 0x30) + var_54;
          goto LAB_00173a9b;
        }
        var_6 = var_17;
        l = plVar11;
        if (var_8 != L'\0') goto LAB_00173b4d;
      }
      else {
        l->used = (type_12)var_18;
LAB_00173a94:
        l->type = LTC_ASN1_CONSTRUCTED;
LAB_00173a9b:
        var_21 = var_55(var_17);
        plVar11->data = var_21;
        if (var_21 == (void *)0x0) {
LAB_00174142:
          var_8 = L'\r';
          goto LAB_00173b4d;
        }
        in_00 = var_2 + var_16;
        var_22(var_21,var_2,var_6);
        plVar11->size = var_6;
        var_17 = var_6 - var_16;
        *var_4 = *var_4 - var_16;
        var_8 = function_1(in_00,&var_17,&plVar11->child);
        plVar11 = l;
        if (var_8 != L'\0') goto LAB_00173b4d;
        var_56 = var_56 + var_16;
        var_23 = l->child;
        var_2 = in_00;
        var_6 = var_17;
        if (var_23 == (type_9 *)0x0) goto LAB_00173a10;
        var_23->parent = l;
        var_19 = 0;
        do {
          var_23 = var_23->child;
          var_19 = var_19 + 1;
        } while (var_23 != (type_9 *)0x0);
        if (0x1e < var_19) {
          var_8 = L'\x01';
          goto LAB_00173b4d;
        }
      }
LAB_00173a10:
      var_56 = var_56 + var_6;
      var_2 = var_2 + var_6;
      var_6 = *var_4 - var_6;
      *var_4 = var_6;
    } while (var_6 != 0);
joined_r0x001740db:
    if (var_56 != 0) {
      bVar5 = false;
      plVar11 = l;
      do {
        var_23 = plVar11->parent;
        if (plVar11->prev == (type_9 *)0x0) {
          if (var_23 == (type_9 *)0x0) goto LAB_00174128;
        }
        else if (var_23 == (type_9 *)0x0) {
          var_23 = plVar11->prev;
        }
        bVar5 = true;
        plVar11 = var_23;
      } while( true );
    }
  }
  var_8 = L'\0';
  *var_5 = l;
  *var_4 = var_56;
LAB_00173b5b:
  if (var_57 == *(long *)(var_1 + 0x28)) {
    return var_8;
  }
                    /* WARNING: Subroutine does not return */
  var_58();
LAB_00174128:
  plVar18 = l;
  if (bVar5) {
    plVar18 = plVar11;
  }
  var_8 = L'\0';
  *var_5 = plVar18;
  *var_4 = var_56;
  goto LAB_00173b5b;
}


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

int MASKED(byte *param_1,ulong *param_2,undefined8 *param_3)

{
  byte bVar1;
  byte bVar2;
  ushort uVar3;
  uint3 uVar4;
  bool bVar5;
  undefined *puVar6;
  int iVar7;
  void *pvVar8;
  int *piVar9;
  int *piVar10;
  ulong uVar11;
  ulong uVar12;
  byte *pbVar13;
  long lVar14;
  size_t __size;
  ulong uVar15;
  ulong uVar16;
  long in_FS_OFFSET;
  int *local_50;
  ulong local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == (byte *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/pk/asn1/der/sequence/MASKED.c",0x56);
  }
  if (param_2 == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("inlen != NULL","src/pk/asn1/der/sequence/MASKED.c",0x57);
  }
  if (param_3 == (undefined8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("out != NULL","src/pk/asn1/der/sequence/MASKED.c",0x58);
  }
  local_50 = (int *)0x0;
  uVar11 = *param_2;
  if (uVar11 == 0) {
    iVar7 = FUN_00173800(&local_50);
    piVar10 = local_50;
    if (iVar7 != 0) {
LAB_00173b4d:
      der_sequence_free(piVar10);
      goto LAB_00173b5b;
    }
    uVar11 = *param_2;
    if (uVar11 != 0) goto LAB_001738bc;
    uVar16 = 0;
  }
  else {
LAB_001738bc:
    uVar16 = 0;
    do {
      bVar1 = *param_1;
      uVar12 = (ulong)bVar1;
      if (uVar11 < 2) {
        local_48 = 0xffffffff;
LAB_00173b43:
        iVar7 = 7;
        piVar10 = local_50;
        goto LAB_00173b4d;
      }
      bVar2 = param_1[1];
      if ((ulong)bVar2 < 0x80) {
        local_48 = (ulong)bVar2 + 2;
        lVar14 = 2;
      }
      else {
        uVar15 = (ulong)(bVar2 & 0x7f);
        if ((uVar11 - 2 < uVar15) || (3 < uVar15 - 1)) {
          lVar14 = 2;
          local_48 = 0xffffffff;
        }
        else {
          lVar14 = uVar15 + 2;
          local_48 = (ulong)param_1[2];
          if (uVar15 != 1) {
            uVar3 = CONCAT11(param_1[2],param_1[3]);
            local_48 = (ulong)uVar3;
            if (uVar15 != 2) {
              uVar4 = CONCAT21(uVar3,param_1[4]);
              local_48 = (ulong)uVar4;
              if (uVar15 != 3) {
                local_48 = (ulong)CONCAT31(uVar4,param_1[5]);
              }
            }
          }
          local_48 = local_48 + lVar14;
        }
      }
      if (uVar11 < local_48) goto LAB_00173b43;
      iVar7 = FUN_00173800(&local_50);
      uVar11 = local_48;
      piVar10 = local_50;
      puVar6 = PTR_ltc_mp_001ddec0;
      if (iVar7 != 0) goto LAB_00173b4d;
      if (((bVar1 & 0x20) == 0) || (uVar12 - 0x30 < 2)) {
        if ((bVar1 & 0xc0) == 0x80) {
          local_50[6] = (uint)bVar1;
          *local_50 = 0x13;
          __size = local_48 - lVar14;
          pvVar8 = calloc(1,__size);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          memcpy(pvVar8,param_1 + lVar14,__size);
          *(size_t *)(piVar10 + 4) = __size;
          goto LAB_00173a10;
        }
        switch(uVar12) {
        default:
          piVar10 = *(int **)(local_50 + 8);
          if (piVar10 != (int *)0x0) {
            local_50 = piVar10;
            free(*(void **)(piVar10 + 10));
            local_50[10] = 0;
            local_50[0xb] = 0;
          }
          goto joined_r0x001740db;
        case 1:
          *local_50 = 1;
          local_50[4] = 1;
          local_50[5] = 0;
          pvVar8 = calloc(1,4);
          uVar11 = *param_2;
          *(void **)(piVar10 + 2) = pvVar8;
          iVar7 = der_decode_boolean(param_1,uVar11,pvVar8);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_boolean(&local_48);
          piVar10 = local_50;
          break;
        case 2:
          *local_50 = 2;
          local_50[4] = 1;
          local_50[5] = 0;
          iVar7 = (**(code **)(puVar6 + 0x10))(local_50 + 2);
          piVar10 = local_50;
          if ((iVar7 != 0) ||
             (iVar7 = der_decode_integer(param_1,*param_2,*(undefined8 *)(local_50 + 2)),
             piVar10 = local_50, iVar7 != 0)) goto LAB_00173b4d;
          iVar7 = der_length_integer(*(undefined8 *)(local_50 + 2),&local_48);
          piVar10 = local_50;
          break;
        case 3:
          *local_50 = 4;
          *(ulong *)(local_50 + 4) = local_48 * 8;
          pvVar8 = calloc(1,local_48 * 8);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_bit_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_bit_string(*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 4:
          *local_50 = 5;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_octet_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_octet_string(*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 5:
          if ((*param_1 == 5) && (param_1[1] == 0)) {
            *local_50 = 6;
            local_50[2] = 0;
            local_50[3] = 0;
            local_50[4] = 0;
            local_50[5] = 0;
            local_48 = 2;
            uVar11 = 2;
            goto LAB_00173a10;
          }
          iVar7 = 7;
          goto LAB_00173b4d;
        case 6:
          *local_50 = 7;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(local_48,8);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_object_identifier(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if ((iVar7 == 0) &&
             (iVar7 = der_length_object_identifier
                                (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),
                                 &local_48), piVar10 = local_50, iVar7 == 0)) {
            pvVar8 = realloc(*(void **)(local_50 + 2),*(long *)(local_50 + 4) * 8);
            uVar11 = local_48;
            if (pvVar8 != (void *)0x0) {
              *(void **)(local_50 + 2) = pvVar8;
            }
            goto LAB_00173a10;
          }
          goto LAB_00173b4d;
        case 0xc:
          *local_50 = 10;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(4,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_utf8_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_utf8_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x13:
          *local_50 = 9;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_printable_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_printable_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x14:
          *local_50 = 0x11;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_teletex_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_teletex_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x16:
          *local_50 = 8;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,local_48);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_ia5_string(param_1,*param_2,pvVar8,piVar10 + 4);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_ia5_string
                            (*(undefined8 *)(local_50 + 2),*(undefined8 *)(local_50 + 4),&local_48);
          piVar10 = local_50;
          break;
        case 0x17:
          *local_50 = 0xb;
          local_50[4] = 1;
          local_50[5] = 0;
          pvVar8 = calloc(1,0x24);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          local_48 = *param_2;
          iVar7 = der_decode_utctime(param_1,&local_48,pvVar8);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_utctime(*(undefined8 *)(local_50 + 2),&local_48);
          piVar10 = local_50;
          break;
        case 0x18:
          *local_50 = 0x14;
          *(ulong *)(local_50 + 4) = local_48;
          pvVar8 = calloc(1,0x28);
          *(void **)(piVar10 + 2) = pvVar8;
          if (pvVar8 == (void *)0x0) goto LAB_00174142;
          iVar7 = der_decode_generalizedtime(param_1,&local_48,pvVar8);
          piVar10 = local_50;
          if (iVar7 != 0) goto LAB_00173b4d;
          iVar7 = der_length_generalizedtime(*(undefined8 *)(local_50 + 2),&local_48);
          piVar10 = local_50;
          break;
        case 0x20:
        case 0x30:
        case 0x31:
          if (uVar12 == 0x20) goto LAB_00173a94;
          *local_50 = (uVar12 != 0x30) + 0xd;
          goto LAB_00173a9b;
        }
        uVar11 = local_48;
        local_50 = piVar10;
        if (iVar7 != 0) goto LAB_00173b4d;
      }
      else {
        local_50[6] = (uint)bVar1;
LAB_00173a94:
        *local_50 = 0x12;
LAB_00173a9b:
        pvVar8 = malloc(local_48);
        *(void **)(piVar10 + 2) = pvVar8;
        if (pvVar8 == (void *)0x0) {
LAB_00174142:
          iVar7 = 0xd;
          goto LAB_00173b4d;
        }
        pbVar13 = param_1 + lVar14;
        memcpy(pvVar8,param_1,uVar11);
        *(ulong *)(piVar10 + 4) = uVar11;
        local_48 = uVar11 - lVar14;
        *param_2 = *param_2 - lVar14;
        iVar7 = MASKED(pbVar13,&local_48,piVar10 + 0xc);
        piVar10 = local_50;
        if (iVar7 != 0) goto LAB_00173b4d;
        uVar16 = uVar16 + lVar14;
        lVar14 = *(long *)(local_50 + 0xc);
        param_1 = pbVar13;
        uVar11 = local_48;
        if (lVar14 == 0) goto LAB_00173a10;
        *(int **)(lVar14 + 0x38) = local_50;
        uVar12 = 0;
        do {
          lVar14 = *(long *)(lVar14 + 0x30);
          uVar12 = uVar12 + 1;
        } while (lVar14 != 0);
        if (0x1e < uVar12) {
          iVar7 = 1;
          goto LAB_00173b4d;
        }
      }
LAB_00173a10:
      uVar16 = uVar16 + uVar11;
      param_1 = param_1 + uVar11;
      uVar11 = *param_2 - uVar11;
      *param_2 = uVar11;
    } while (uVar11 != 0);
joined_r0x001740db:
    if (uVar16 != 0) {
      bVar5 = false;
      piVar10 = local_50;
      do {
        piVar9 = *(int **)(piVar10 + 0xe);
        if (*(int **)(piVar10 + 8) == (int *)0x0) {
          if (piVar9 == (int *)0x0) goto LAB_00174128;
        }
        else if (piVar9 == (int *)0x0) {
          piVar9 = *(int **)(piVar10 + 8);
        }
        bVar5 = true;
        piVar10 = piVar9;
      } while( true );
    }
  }
  iVar7 = 0;
  *param_3 = local_50;
  *param_2 = uVar16;
LAB_00173b5b:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return iVar7;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
LAB_00174128:
  piVar9 = local_50;
  if (bVar5) {
    piVar9 = piVar10;
  }
  iVar7 = 0;
  *param_3 = piVar9;
  *param_2 = uVar16;
  goto LAB_00173b5b;
}

