
int der_decode_ia5_string(uchar *in,ulong inlen,uchar *out,ulong *outlen)

{
  byte *pbVar1;
  byte bVar2;
  ushort uVar3;
  int iVar4;
  ulong uVar5;
  uint uVar6;
  long lVar7;
  ulong uVar8;
  
  if (in == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);
  }
  if (out == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);
  }
  if (outlen == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);
  }
  if (inlen < 2) {
    return 7;
  }
  if ((*in & 0x1f) != 0x16) {
    return 7;
  }
  bVar2 = in[1];
  uVar8 = (ulong)bVar2;
  lVar7 = 2;
  if ((char)bVar2 < '\0') {
    uVar5 = (ulong)(bVar2 & 0x7f);
    if (2 < uVar5 - 1) {
      return 7;
    }
    if (inlen < uVar5 + 1) {
      return 7;
    }
    uVar8 = (ulong)in[2];
    if (uVar5 != 1) {
      uVar3 = CONCAT11(in[2],in[3]);
      uVar8 = (ulong)uVar3;
      if (uVar5 != 2) {
        uVar8 = (ulong)CONCAT21(uVar3,in[4]);
      }
    }
    lVar7 = uVar5 + 2;
  }
  if (*outlen < uVar8) {
    *outlen = uVar8;
    return 6;
  }
  if (inlen < lVar7 + uVar8) {
    return 7;
  }
  uVar5 = 0;
  if (uVar8 != 0) {
    pbVar1 = in + lVar7;
    uVar6 = (uint)uVar8 & 7;
    if ((uVar8 & 7) != 0) {
      if (uVar6 != 1) {
        if (uVar6 != 2) {
          if (uVar6 != 3) {
            if (uVar6 != 4) {
              if (uVar6 != 5) {
                if (uVar6 != 6) {
                  iVar4 = der_ia5_value_decode((uint)*pbVar1);
                  if (iVar4 == -1) {
                    return 0x10;
                  }
                  *out = (uchar)iVar4;
                  uVar5 = 1;
                }
                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);
                if (iVar4 == -1) {
                  return 0x10;
                }
                out[uVar5] = (uchar)iVar4;
                uVar5 = uVar5 + 1;
              }
              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);
              if (iVar4 == -1) {
                return 0x10;
              }
              out[uVar5] = (uchar)iVar4;
              uVar5 = uVar5 + 1;
            }
            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);
            if (iVar4 == -1) {
              return 0x10;
            }
            out[uVar5] = (uchar)iVar4;
            uVar5 = uVar5 + 1;
          }
          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);
          if (iVar4 == -1) {
            return 0x10;
          }
          out[uVar5] = (uchar)iVar4;
          uVar5 = uVar5 + 1;
        }
        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);
        if (iVar4 == -1) {
          return 0x10;
        }
        out[uVar5] = (uchar)iVar4;
        uVar5 = uVar5 + 1;
      }
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5] = (uchar)iVar4;
      uVar5 = uVar5 + 1;
      if (uVar8 == uVar5) goto LAB_00170318;
    }
    do {
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5] = (uchar)iVar4;
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5 + 1] = (uchar)iVar4;
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5 + 2] = (uchar)iVar4;
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5 + 3] = (uchar)iVar4;
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5 + 4] = (uchar)iVar4;
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5 + 5] = (uchar)iVar4;
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5 + 6] = (uchar)iVar4;
      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);
      if (iVar4 == -1) {
        return 0x10;
      }
      out[uVar5 + 7] = (uchar)iVar4;
      uVar5 = uVar5 + 8;
    } while (uVar8 != uVar5);
  }
LAB_00170318:
  *outlen = uVar5;
  return 0;
}



undefined8 der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)

{
  byte bVar1;
  ushort uVar2;
  int iVar3;
  ulong uVar4;
  uint uVar5;
  long lVar6;
  ulong uVar7;
  
  if (param_1 == (byte *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);
  }
  if (param_3 == (undefined1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);
  }
  if (param_4 == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);
  }
  if (param_2 < 2) {
    return 7;
  }
  if ((*param_1 & 0x1f) != 0x16) {
    return 7;
  }
  bVar1 = param_1[1];
  uVar7 = (ulong)bVar1;
  lVar6 = 2;
  if ((char)bVar1 < '\0') {
    uVar4 = (ulong)(bVar1 & 0x7f);
    if (2 < uVar4 - 1) {
      return 7;
    }
    if (param_2 < uVar4 + 1) {
      return 7;
    }
    uVar7 = (ulong)param_1[2];
    if (uVar4 != 1) {
      uVar2 = CONCAT11(param_1[2],param_1[3]);
      uVar7 = (ulong)uVar2;
      if (uVar4 != 2) {
        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);
      }
    }
    lVar6 = uVar4 + 2;
  }
  if (*param_4 < uVar7) {
    *param_4 = uVar7;
    return 6;
  }
  if (param_2 < lVar6 + uVar7) {
    return 7;
  }
  uVar4 = 0;
  if (uVar7 != 0) {
    param_1 = param_1 + lVar6;
    uVar5 = (uint)uVar7 & 7;
    if ((uVar7 & 7) != 0) {
      if (uVar5 != 1) {
        if (uVar5 != 2) {
          if (uVar5 != 3) {
            if (uVar5 != 4) {
              if (uVar5 != 5) {
                if (uVar5 != 6) {
                  iVar3 = der_ia5_value_decode(*param_1);
                  if (iVar3 == -1) {
                    return 0x10;
                  }
                  *param_3 = (char)iVar3;
                  uVar4 = 1;
                }
                iVar3 = der_ia5_value_decode(param_1[uVar4]);
                if (iVar3 == -1) {
                  return 0x10;
                }
                param_3[uVar4] = (char)iVar3;
                uVar4 = uVar4 + 1;
              }
              iVar3 = der_ia5_value_decode(param_1[uVar4]);
              if (iVar3 == -1) {
                return 0x10;
              }
              param_3[uVar4] = (char)iVar3;
              uVar4 = uVar4 + 1;
            }
            iVar3 = der_ia5_value_decode(param_1[uVar4]);
            if (iVar3 == -1) {
              return 0x10;
            }
            param_3[uVar4] = (char)iVar3;
            uVar4 = uVar4 + 1;
          }
          iVar3 = der_ia5_value_decode(param_1[uVar4]);
          if (iVar3 == -1) {
            return 0x10;
          }
          param_3[uVar4] = (char)iVar3;
          uVar4 = uVar4 + 1;
        }
        iVar3 = der_ia5_value_decode(param_1[uVar4]);
        if (iVar3 == -1) {
          return 0x10;
        }
        param_3[uVar4] = (char)iVar3;
        uVar4 = uVar4 + 1;
      }
      iVar3 = der_ia5_value_decode(param_1[uVar4]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4] = (char)iVar3;
      uVar4 = uVar4 + 1;
      if (uVar7 == uVar4) goto LAB_00170318;
    }
    do {
      iVar3 = der_ia5_value_decode(param_1[uVar4]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 1] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 2] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 3] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 4] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 5] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 6] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 7] = (char)iVar3;
      uVar4 = uVar4 + 8;
    } while (uVar7 != uVar4);
  }
LAB_00170318:
  *param_4 = uVar4;
  return 0;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
TEST RDI,RDI
JZ 0x001703e3
MOV RBP,RDX
TEST RDX,RDX
JZ 0x001703cb
MOV R13,RCX
TEST RCX,RCX
JZ 0x001703fb
CMP RSI,0x1
JBE 0x00170390
MOVZX EDX,byte ptr [RDI]
MOV EAX,0x7
AND EDX,0x1f
CMP DL,0x16
JNZ 0x0017031e
MOVZX R12D,byte ptr [RDI + 0x1]
MOV R10D,0x2
MOV RBX,R12
TEST R12B,R12B
JS 0x00170330
CMP qword ptr [R13],R12
JC 0x001703a0
LEA R11,[R10 + R12*0x1]
MOV EAX,0x7
CMP R11,RSI
JA 0x0017031e
XOR EBX,EBX
TEST R12,R12
JZ 0x00170318
MOV RSI,R12
LEA R14,[RDI + R10*0x1]
AND ESI,0x7
JZ 0x00170250
CMP RSI,0x1
JZ 0x0017022c
CMP RSI,0x2
JZ 0x00170211
CMP RSI,0x3
JZ 0x001701f6
CMP RSI,0x4
JZ 0x001701db
CMP RSI,0x5
JZ 0x001701c0
CMP RSI,0x6
JNZ 0x001703b0
MOVZX EDI,byte ptr [R14 + RBX*0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1],AL
ADD RBX,0x1
MOVZX EDI,byte ptr [R14 + RBX*0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1],AL
ADD RBX,0x1
MOVZX EDI,byte ptr [R14 + RBX*0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1],AL
ADD RBX,0x1
MOVZX EDI,byte ptr [R14 + RBX*0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1],AL
ADD RBX,0x1
MOVZX EDI,byte ptr [R14 + RBX*0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1],AL
ADD RBX,0x1
MOVZX EDI,byte ptr [R14 + RBX*0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1],AL
ADD RBX,0x1
CMP R12,RBX
JZ 0x00170318
MOVZX EDI,byte ptr [R14 + RBX*0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1],AL
MOVZX EDI,byte ptr [RBX + R14*0x1 + 0x1]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1 + 0x1],AL
MOVZX EDI,byte ptr [RBX + R14*0x1 + 0x2]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1 + 0x2],AL
MOVZX EDI,byte ptr [RBX + R14*0x1 + 0x3]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1 + 0x3],AL
MOVZX EDI,byte ptr [RBX + R14*0x1 + 0x4]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1 + 0x4],AL
MOVZX EDI,byte ptr [RBX + R14*0x1 + 0x5]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1 + 0x5],AL
MOVZX EDI,byte ptr [RBX + R14*0x1 + 0x6]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1 + 0x6],AL
MOVZX EDI,byte ptr [RBX + R14*0x1 + 0x7]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP + RBX*0x1 + 0x7],AL
ADD RBX,0x8
CMP R12,RBX
JNZ 0x00170250
MOV qword ptr [R13],RBX
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
AND EBX,0x7f
LEA RCX,[RBX + -0x1]
CMP RCX,0x2
JA 0x0017031e
LEA R8,[RBX + 0x1]
CMP R8,RSI
JA 0x0017031e
MOVZX R12D,byte ptr [RDI + 0x2]
TEST RCX,RCX
JZ 0x0017036d
MOVZX EAX,byte ptr [RDI + 0x3]
SHL R12,0x8
OR R12,RAX
CMP RBX,0x2
JZ 0x0017036d
MOVZX R9D,byte ptr [RDI + 0x4]
SHL R12,0x8
OR R12,R9
LEA R10,[RBX + 0x2]
JMP 0x0017013e
POP RBX
MOV EAX,0x10
POP RBP
POP R12
POP R13
POP R14
RET
POP RBX
MOV EAX,0x7
POP RBP
POP R12
POP R13
POP R14
RET
MOV qword ptr [R13],R12
MOV EAX,0x6
JMP 0x0017031e
MOVZX EDI,byte ptr [R14]
CALL 0x00113d50
CMP EAX,-0x1
JZ 0x00170380
MOV byte ptr [RBP],AL
MOV EBX,0x1
JMP 0x001701a5
MOV EDX,0x22
LEA RSI,[0x1c2f20]
LEA RDI,[0x1a87a1]
CALL 0x00114270
MOV EDX,0x21
LEA RSI,[0x1c2f20]
LEA RDI,[0x1a8790]
CALL 0x00114270
MOV EDX,0x23
LEA RSI,[0x1c2f20]
LEA RDI,[0x1ae804]
CALL 0x00114270
(translation_unit "undefined8 der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}\n\n" (function_definition "undefined8 der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}" type_identifier (function_declarator "der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)" identifier (parameter_list "(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "undefined1 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "ulong *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (if_statement "if (param_1 == (byte *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\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/ia5/der_decode_ia5_string.c",0x21);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" identifier (argument_list "("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" if (parenthesized_expression "(param_3 == (undefined1 *)0x0)" ( (binary_expression "param_3 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" { comment (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" identifier (argument_list "("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_4 == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" if (parenthesized_expression "(param_4 == (ulong *)0x0)" ( (binary_expression "param_4 == (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("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" { comment (expression_statement "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);" (call_expression "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" identifier (argument_list "("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" ( (string_literal ""outlen != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 < 2) {\n    return 7;\n  }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }" if (parenthesized_expression "((*param_1 & 0x1f) != 0x16)" ( (binary_expression "(*param_1 & 0x1f) != 0x16" (parenthesized_expression "(*param_1 & 0x1f)" ( (binary_expression "*param_1 & 0x1f" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (ulong)bVar1;" (assignment_expression "uVar7 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "lVar6 = 2;" (assignment_expression "lVar6 = 2" identifier = number_literal) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }" { (expression_statement "uVar4 = (ulong)(bVar1 & 0x7f);" (assignment_expression "uVar4 = (ulong)(bVar1 & 0x7f)" identifier = (call_expression "(ulong)(bVar1 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )))) ;) (if_statement "if (2 < uVar4 - 1) {\n      return 7;\n    }" if (parenthesized_expression "(2 < uVar4 - 1)" ( (binary_expression "2 < uVar4 - 1" number_literal < (binary_expression "uVar4 - 1" identifier - number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if (param_2 < uVar4 + 1) {\n      return 7;\n    }" if (parenthesized_expression "(param_2 < uVar4 + 1)" ( (binary_expression "param_2 < uVar4 + 1" identifier < (binary_expression "uVar4 + 1" identifier + number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar7 = (ulong)param_1[2];" (assignment_expression "uVar7 = (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 (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }" if (parenthesized_expression "(uVar4 != 1)" ( (binary_expression "uVar4 != 1" identifier != number_literal) )) (compound_statement "{\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }" { (expression_statement "uVar2 = CONCAT11(param_1[2],param_1[3]);" (assignment_expression "uVar2 = 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 "uVar7 = (ulong)uVar2;" (assignment_expression "uVar7 = (ulong)uVar2" identifier = (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }" if (parenthesized_expression "(uVar4 != 2)" ( (binary_expression "uVar4 != 2" identifier != number_literal) )) (compound_statement "{\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }" { (expression_statement "uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);" (assignment_expression "uVar7 = (ulong)CONCAT21(uVar2,param_1[4])" identifier = (cast_expression "(ulong)CONCAT21(uVar2,param_1[4])" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CONCAT21(uVar2,param_1[4])" identifier (argument_list "(uVar2,param_1[4])" ( identifier , (subscript_expression "param_1[4]" identifier [ number_literal ]) ))))) ;) })) })) (expression_statement "lVar6 = uVar4 + 2;" (assignment_expression "lVar6 = uVar4 + 2" identifier = (binary_expression "uVar4 + 2" identifier + number_literal)) ;) })) (if_statement "if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }" if (parenthesized_expression "(*param_4 < uVar7)" ( (binary_expression "*param_4 < uVar7" (pointer_expression "*param_4" * identifier) < identifier) )) (compound_statement "{\n    *param_4 = uVar7;\n    return 6;\n  }" { (expression_statement "*param_4 = uVar7;" (assignment_expression "*param_4 = uVar7" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return 6;" return number_literal ;) })) (if_statement "if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }" if (parenthesized_expression "(param_2 < lVar6 + uVar7)" ( (binary_expression "param_2 < lVar6 + uVar7" identifier < (binary_expression "lVar6 + uVar7" identifier + identifier)) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }" { (expression_statement "param_1 = param_1 + lVar6;" (assignment_expression "param_1 = param_1 + lVar6" identifier = (binary_expression "param_1 + lVar6" identifier + identifier)) ;) (expression_statement "uVar5 = (uint)uVar7 & 7;" (assignment_expression "uVar5 = (uint)uVar7 & 7" identifier = (binary_expression "(uint)uVar7 & 7" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }" if (parenthesized_expression "((uVar7 & 7) != 0)" ( (binary_expression "(uVar7 & 7) != 0" (parenthesized_expression "(uVar7 & 7)" ( (binary_expression "uVar7 & 7" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }" { (if_statement "if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }" if (parenthesized_expression "(uVar5 != 1)" ( (binary_expression "uVar5 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }" { (if_statement "if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }" if (parenthesized_expression "(uVar5 != 2)" ( (binary_expression "uVar5 != 2" identifier != number_literal) )) (compound_statement "{\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }" { (if_statement "if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }" if (parenthesized_expression "(uVar5 != 3)" ( (binary_expression "uVar5 != 3" identifier != number_literal) )) (compound_statement "{\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }" { (if_statement "if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }" if (parenthesized_expression "(uVar5 != 4)" ( (binary_expression "uVar5 != 4" identifier != number_literal) )) (compound_statement "{\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }" { (if_statement "if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }" if (parenthesized_expression "(uVar5 != 5)" ( (binary_expression "uVar5 != 5" identifier != number_literal) )) (compound_statement "{\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }" { (if_statement "if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }" if (parenthesized_expression "(uVar5 != 6)" ( (binary_expression "uVar5 != 6" identifier != number_literal) )) (compound_statement "{\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }" { (expression_statement "iVar3 = der_ia5_value_decode(*param_1);" (assignment_expression "iVar3 = der_ia5_value_decode(*param_1)" identifier = (call_expression "der_ia5_value_decode(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (iVar3 == -1) {\n                    return 0x10;\n                  }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n                    return 0x10;\n                  }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "*param_3 = (char)iVar3;" (assignment_expression "*param_3 = (char)iVar3" (pointer_expression "*param_3" * identifier) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n                  return 0x10;\n                }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n                  return 0x10;\n                }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n                return 0x10;\n              }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n                return 0x10;\n              }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n              return 0x10;\n            }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n              return 0x10;\n            }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n            return 0x10;\n          }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n            return 0x10;\n          }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n          return 0x10;\n        }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar7 == uVar4) goto LAB_00170318;" if (parenthesized_expression "(uVar7 == uVar4)" ( (binary_expression "uVar7 == uVar4" identifier == identifier) )) (goto_statement "goto LAB_00170318;" goto statement_identifier ;)) })) (do_statement "do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);" do (compound_statement "{\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    }" { (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 1])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 1])" identifier (argument_list "(param_1[uVar4 + 1])" ( (subscript_expression "param_1[uVar4 + 1]" identifier [ (binary_expression "uVar4 + 1" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 1] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 1] = (char)iVar3" (subscript_expression "param_3[uVar4 + 1]" identifier [ (binary_expression "uVar4 + 1" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 2])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 2])" identifier (argument_list "(param_1[uVar4 + 2])" ( (subscript_expression "param_1[uVar4 + 2]" identifier [ (binary_expression "uVar4 + 2" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 2] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 2] = (char)iVar3" (subscript_expression "param_3[uVar4 + 2]" identifier [ (binary_expression "uVar4 + 2" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 3])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 3])" identifier (argument_list "(param_1[uVar4 + 3])" ( (subscript_expression "param_1[uVar4 + 3]" identifier [ (binary_expression "uVar4 + 3" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 3] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 3] = (char)iVar3" (subscript_expression "param_3[uVar4 + 3]" identifier [ (binary_expression "uVar4 + 3" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 4])" identifier (argument_list "(param_1[uVar4 + 4])" ( (subscript_expression "param_1[uVar4 + 4]" identifier [ (binary_expression "uVar4 + 4" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 4] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 4] = (char)iVar3" (subscript_expression "param_3[uVar4 + 4]" identifier [ (binary_expression "uVar4 + 4" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 5])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 5])" identifier (argument_list "(param_1[uVar4 + 5])" ( (subscript_expression "param_1[uVar4 + 5]" identifier [ (binary_expression "uVar4 + 5" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 5] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 5] = (char)iVar3" (subscript_expression "param_3[uVar4 + 5]" identifier [ (binary_expression "uVar4 + 5" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 6])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 6])" identifier (argument_list "(param_1[uVar4 + 6])" ( (subscript_expression "param_1[uVar4 + 6]" identifier [ (binary_expression "uVar4 + 6" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 6] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 6] = (char)iVar3" (subscript_expression "param_3[uVar4 + 6]" identifier [ (binary_expression "uVar4 + 6" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 7])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 7])" identifier (argument_list "(param_1[uVar4 + 7])" ( (subscript_expression "param_1[uVar4 + 7]" identifier [ (binary_expression "uVar4 + 7" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 7] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 7] = (char)iVar3" (subscript_expression "param_3[uVar4 + 7]" identifier [ (binary_expression "uVar4 + 7" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 8;" (assignment_expression "uVar4 = uVar4 + 8" identifier = (binary_expression "uVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 != uVar4)" ( (binary_expression "uVar7 != uVar4" identifier != identifier) )) ;) })) (labeled_statement "LAB_00170318:\n  *param_4 = uVar4;" statement_identifier : (expression_statement "*param_4 = uVar4;" (assignment_expression "*param_4 = uVar4" (pointer_expression "*param_4" * identifier) = identifier) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int der_decode_ia5_string(uchar *in,ulong inlen,uchar *out,ulong *outlen)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  ushort uVar3;\n  int iVar4;\n  ulong uVar5;\n  uint uVar6;\n  long lVar7;\n  ulong uVar8;\n  \n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (out == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (inlen < 2) {\n    return 7;\n  }\n  if ((*in & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar2 = in[1];\n  uVar8 = (ulong)bVar2;\n  lVar7 = 2;\n  if ((char)bVar2 < '\0') {\n    uVar5 = (ulong)(bVar2 & 0x7f);\n    if (2 < uVar5 - 1) {\n      return 7;\n    }\n    if (inlen < uVar5 + 1) {\n      return 7;\n    }\n    uVar8 = (ulong)in[2];\n    if (uVar5 != 1) {\n      uVar3 = CONCAT11(in[2],in[3]);\n      uVar8 = (ulong)uVar3;\n      if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }\n    }\n    lVar7 = uVar5 + 2;\n  }\n  if (*outlen < uVar8) {\n    *outlen = uVar8;\n    return 6;\n  }\n  if (inlen < lVar7 + uVar8) {\n    return 7;\n  }\n  uVar5 = 0;\n  if (uVar8 != 0) {\n    pbVar1 = in + lVar7;\n    uVar6 = (uint)uVar8 & 7;\n    if ((uVar8 & 7) != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      uVar5 = uVar5 + 1;\n      if (uVar8 == uVar5) goto LAB_00170318;\n    }\n    do {\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 1] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 2] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 3] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 4] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 6] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 7] = (uchar)iVar4;\n      uVar5 = uVar5 + 8;\n    } while (uVar8 != uVar5);\n  }\nLAB_00170318:\n  *outlen = uVar5;\n  return 0;\n}\n\n" (function_definition "int der_decode_ia5_string(uchar *in,ulong inlen,uchar *out,ulong *outlen)\n\n{\n  byte *pbVar1;\n  byte bVar2;\n  ushort uVar3;\n  int iVar4;\n  ulong uVar5;\n  uint uVar6;\n  long lVar7;\n  ulong uVar8;\n  \n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (out == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (inlen < 2) {\n    return 7;\n  }\n  if ((*in & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar2 = in[1];\n  uVar8 = (ulong)bVar2;\n  lVar7 = 2;\n  if ((char)bVar2 < '\0') {\n    uVar5 = (ulong)(bVar2 & 0x7f);\n    if (2 < uVar5 - 1) {\n      return 7;\n    }\n    if (inlen < uVar5 + 1) {\n      return 7;\n    }\n    uVar8 = (ulong)in[2];\n    if (uVar5 != 1) {\n      uVar3 = CONCAT11(in[2],in[3]);\n      uVar8 = (ulong)uVar3;\n      if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }\n    }\n    lVar7 = uVar5 + 2;\n  }\n  if (*outlen < uVar8) {\n    *outlen = uVar8;\n    return 6;\n  }\n  if (inlen < lVar7 + uVar8) {\n    return 7;\n  }\n  uVar5 = 0;\n  if (uVar8 != 0) {\n    pbVar1 = in + lVar7;\n    uVar6 = (uint)uVar8 & 7;\n    if ((uVar8 & 7) != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      uVar5 = uVar5 + 1;\n      if (uVar8 == uVar5) goto LAB_00170318;\n    }\n    do {\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 1] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 2] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 3] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 4] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 6] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 7] = (uchar)iVar4;\n      uVar5 = uVar5 + 8;\n    } while (uVar8 != uVar5);\n  }\nLAB_00170318:\n  *outlen = uVar5;\n  return 0;\n}" primitive_type (function_declarator "der_decode_ia5_string(uchar *in,ulong inlen,uchar *out,ulong *outlen)" identifier (parameter_list "(uchar *in,ulong inlen,uchar *out,ulong *outlen)" ( (parameter_declaration "uchar *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "ulong inlen" type_identifier identifier) , (parameter_declaration "uchar *out" type_identifier (pointer_declarator "*out" * identifier)) , (parameter_declaration "ulong *outlen" type_identifier (pointer_declarator "*outlen" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  byte bVar2;\n  ushort uVar3;\n  int iVar4;\n  ulong uVar5;\n  uint uVar6;\n  long lVar7;\n  ulong uVar8;\n  \n  if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (out == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (inlen < 2) {\n    return 7;\n  }\n  if ((*in & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar2 = in[1];\n  uVar8 = (ulong)bVar2;\n  lVar7 = 2;\n  if ((char)bVar2 < '\0') {\n    uVar5 = (ulong)(bVar2 & 0x7f);\n    if (2 < uVar5 - 1) {\n      return 7;\n    }\n    if (inlen < uVar5 + 1) {\n      return 7;\n    }\n    uVar8 = (ulong)in[2];\n    if (uVar5 != 1) {\n      uVar3 = CONCAT11(in[2],in[3]);\n      uVar8 = (ulong)uVar3;\n      if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }\n    }\n    lVar7 = uVar5 + 2;\n  }\n  if (*outlen < uVar8) {\n    *outlen = uVar8;\n    return 6;\n  }\n  if (inlen < lVar7 + uVar8) {\n    return 7;\n  }\n  uVar5 = 0;\n  if (uVar8 != 0) {\n    pbVar1 = in + lVar7;\n    uVar6 = (uint)uVar8 & 7;\n    if ((uVar8 & 7) != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      uVar5 = uVar5 + 1;\n      if (uVar8 == uVar5) goto LAB_00170318;\n    }\n    do {\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 1] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 2] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 3] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 4] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 6] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 7] = (uchar)iVar4;\n      uVar5 = uVar5 + 8;\n    } while (uVar8 != uVar5);\n  }\nLAB_00170318:\n  *outlen = uVar5;\n  return 0;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (if_statement "if (in == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\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/ia5/der_decode_ia5_string.c",0x21);\n  }" { comment (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" identifier (argument_list "("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (out == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" if (parenthesized_expression "(out == (uchar *)0x0)" ( (binary_expression "out == (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("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" { comment (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" identifier (argument_list "("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (outlen == (ulong *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" if (parenthesized_expression "(outlen == (ulong *)0x0)" ( (binary_expression "outlen == (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("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" { comment (expression_statement "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);" (call_expression "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" identifier (argument_list "("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" ( (string_literal ""outlen != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (inlen < 2) {\n    return 7;\n  }" if (parenthesized_expression "(inlen < 2)" ( (binary_expression "inlen < 2" identifier < number_literal) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if ((*in & 0x1f) != 0x16) {\n    return 7;\n  }" if (parenthesized_expression "((*in & 0x1f) != 0x16)" ( (binary_expression "(*in & 0x1f) != 0x16" (parenthesized_expression "(*in & 0x1f)" ( (binary_expression "*in & 0x1f" (pointer_expression "*in" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "bVar2 = in[1];" (assignment_expression "bVar2 = in[1]" identifier = (subscript_expression "in[1]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = (ulong)bVar2;" (assignment_expression "uVar8 = (ulong)bVar2" identifier = (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "lVar7 = 2;" (assignment_expression "lVar7 = 2" identifier = number_literal) ;) (if_statement "if ((char)bVar2 < '\0') {\n    uVar5 = (ulong)(bVar2 & 0x7f);\n    if (2 < uVar5 - 1) {\n      return 7;\n    }\n    if (inlen < uVar5 + 1) {\n      return 7;\n    }\n    uVar8 = (ulong)in[2];\n    if (uVar5 != 1) {\n      uVar3 = CONCAT11(in[2],in[3]);\n      uVar8 = (ulong)uVar3;\n      if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }\n    }\n    lVar7 = uVar5 + 2;\n  }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = (ulong)(bVar2 & 0x7f);\n    if (2 < uVar5 - 1) {\n      return 7;\n    }\n    if (inlen < uVar5 + 1) {\n      return 7;\n    }\n    uVar8 = (ulong)in[2];\n    if (uVar5 != 1) {\n      uVar3 = CONCAT11(in[2],in[3]);\n      uVar8 = (ulong)uVar3;\n      if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }\n    }\n    lVar7 = uVar5 + 2;\n  }" { (expression_statement "uVar5 = (ulong)(bVar2 & 0x7f);" (assignment_expression "uVar5 = (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 (2 < uVar5 - 1) {\n      return 7;\n    }" if (parenthesized_expression "(2 < uVar5 - 1)" ( (binary_expression "2 < uVar5 - 1" number_literal < (binary_expression "uVar5 - 1" identifier - number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if (inlen < uVar5 + 1) {\n      return 7;\n    }" if (parenthesized_expression "(inlen < uVar5 + 1)" ( (binary_expression "inlen < uVar5 + 1" identifier < (binary_expression "uVar5 + 1" identifier + number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar8 = (ulong)in[2];" (assignment_expression "uVar8 = (ulong)in[2]" identifier = (cast_expression "(ulong)in[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "in[2]" identifier [ number_literal ]))) ;) (if_statement "if (uVar5 != 1) {\n      uVar3 = CONCAT11(in[2],in[3]);\n      uVar8 = (ulong)uVar3;\n      if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }\n    }" if (parenthesized_expression "(uVar5 != 1)" ( (binary_expression "uVar5 != 1" identifier != number_literal) )) (compound_statement "{\n      uVar3 = CONCAT11(in[2],in[3]);\n      uVar8 = (ulong)uVar3;\n      if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\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 "uVar8 = (ulong)uVar3;" (assignment_expression "uVar8 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar5 != 2) {\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }" if (parenthesized_expression "(uVar5 != 2)" ( (binary_expression "uVar5 != 2" identifier != number_literal) )) (compound_statement "{\n        uVar8 = (ulong)CONCAT21(uVar3,in[4]);\n      }" { (expression_statement "uVar8 = (ulong)CONCAT21(uVar3,in[4]);" (assignment_expression "uVar8 = (ulong)CONCAT21(uVar3,in[4])" identifier = (cast_expression "(ulong)CONCAT21(uVar3,in[4])" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CONCAT21(uVar3,in[4])" identifier (argument_list "(uVar3,in[4])" ( identifier , (subscript_expression "in[4]" identifier [ number_literal ]) ))))) ;) })) })) (expression_statement "lVar7 = uVar5 + 2;" (assignment_expression "lVar7 = uVar5 + 2" identifier = (binary_expression "uVar5 + 2" identifier + number_literal)) ;) })) (if_statement "if (*outlen < uVar8) {\n    *outlen = uVar8;\n    return 6;\n  }" if (parenthesized_expression "(*outlen < uVar8)" ( (binary_expression "*outlen < uVar8" (pointer_expression "*outlen" * identifier) < identifier) )) (compound_statement "{\n    *outlen = uVar8;\n    return 6;\n  }" { (expression_statement "*outlen = uVar8;" (assignment_expression "*outlen = uVar8" (pointer_expression "*outlen" * identifier) = identifier) ;) (return_statement "return 6;" return number_literal ;) })) (if_statement "if (inlen < lVar7 + uVar8) {\n    return 7;\n  }" if (parenthesized_expression "(inlen < lVar7 + uVar8)" ( (binary_expression "inlen < lVar7 + uVar8" identifier < (binary_expression "lVar7 + uVar8" identifier + identifier)) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (if_statement "if (uVar8 != 0) {\n    pbVar1 = in + lVar7;\n    uVar6 = (uint)uVar8 & 7;\n    if ((uVar8 & 7) != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      uVar5 = uVar5 + 1;\n      if (uVar8 == uVar5) goto LAB_00170318;\n    }\n    do {\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 1] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 2] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 3] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 4] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 6] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 7] = (uchar)iVar4;\n      uVar5 = uVar5 + 8;\n    } while (uVar8 != uVar5);\n  }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    pbVar1 = in + lVar7;\n    uVar6 = (uint)uVar8 & 7;\n    if ((uVar8 & 7) != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      uVar5 = uVar5 + 1;\n      if (uVar8 == uVar5) goto LAB_00170318;\n    }\n    do {\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 1] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 2] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 3] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 4] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 6] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 7] = (uchar)iVar4;\n      uVar5 = uVar5 + 8;\n    } while (uVar8 != uVar5);\n  }" { (expression_statement "pbVar1 = in + lVar7;" (assignment_expression "pbVar1 = in + lVar7" identifier = (binary_expression "in + lVar7" identifier + identifier)) ;) (expression_statement "uVar6 = (uint)uVar8 & 7;" (assignment_expression "uVar6 = (uint)uVar8 & 7" identifier = (binary_expression "(uint)uVar8 & 7" (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((uVar8 & 7) != 0) {\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      uVar5 = uVar5 + 1;\n      if (uVar8 == uVar5) goto LAB_00170318;\n    }" if (parenthesized_expression "((uVar8 & 7) != 0)" ( (binary_expression "(uVar8 & 7) != 0" (parenthesized_expression "(uVar8 & 7)" ( (binary_expression "uVar8 & 7" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      uVar5 = uVar5 + 1;\n      if (uVar8 == uVar5) goto LAB_00170318;\n    }" { (if_statement "if (uVar6 != 1) {\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }" if (parenthesized_expression "(uVar6 != 1)" ( (binary_expression "uVar6 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }\n        iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n        if (iVar4 == -1) {\n          return 0x10;\n        }\n        out[uVar5] = (uchar)iVar4;\n        uVar5 = uVar5 + 1;\n      }" { (if_statement "if (uVar6 != 2) {\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }" if (parenthesized_expression "(uVar6 != 2)" ( (binary_expression "uVar6 != 2" identifier != number_literal) )) (compound_statement "{\n          if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }\n          iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n          if (iVar4 == -1) {\n            return 0x10;\n          }\n          out[uVar5] = (uchar)iVar4;\n          uVar5 = uVar5 + 1;\n        }" { (if_statement "if (uVar6 != 3) {\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }" if (parenthesized_expression "(uVar6 != 3)" ( (binary_expression "uVar6 != 3" identifier != number_literal) )) (compound_statement "{\n            if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }\n            iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n            if (iVar4 == -1) {\n              return 0x10;\n            }\n            out[uVar5] = (uchar)iVar4;\n            uVar5 = uVar5 + 1;\n          }" { (if_statement "if (uVar6 != 4) {\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }" if (parenthesized_expression "(uVar6 != 4)" ( (binary_expression "uVar6 != 4" identifier != number_literal) )) (compound_statement "{\n              if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }\n              iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n              if (iVar4 == -1) {\n                return 0x10;\n              }\n              out[uVar5] = (uchar)iVar4;\n              uVar5 = uVar5 + 1;\n            }" { (if_statement "if (uVar6 != 5) {\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }" if (parenthesized_expression "(uVar6 != 5)" ( (binary_expression "uVar6 != 5" identifier != number_literal) )) (compound_statement "{\n                if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }\n                iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n                if (iVar4 == -1) {\n                  return 0x10;\n                }\n                out[uVar5] = (uchar)iVar4;\n                uVar5 = uVar5 + 1;\n              }" { (if_statement "if (uVar6 != 6) {\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }" if (parenthesized_expression "(uVar6 != 6)" ( (binary_expression "uVar6 != 6" identifier != number_literal) )) (compound_statement "{\n                  iVar4 = der_ia5_value_decode((uint)*pbVar1);\n                  if (iVar4 == -1) {\n                    return 0x10;\n                  }\n                  *out = (uchar)iVar4;\n                  uVar5 = 1;\n                }" { (expression_statement "iVar4 = der_ia5_value_decode((uint)*pbVar1);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)*pbVar1)" identifier = (call_expression "der_ia5_value_decode((uint)*pbVar1)" identifier (argument_list "((uint)*pbVar1)" ( (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) )))) ;) (if_statement "if (iVar4 == -1) {\n                    return 0x10;\n                  }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n                    return 0x10;\n                  }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "*out = (uchar)iVar4;" (assignment_expression "*out = (uchar)iVar4" (pointer_expression "*out" * identifier) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5])" identifier (argument_list "((uint)pbVar1[uVar5])" ( (cast_expression "(uint)pbVar1[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5]" identifier [ identifier ])) )))) ;) (if_statement "if (iVar4 == -1) {\n                  return 0x10;\n                }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n                  return 0x10;\n                }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5] = (uchar)iVar4;" (assignment_expression "out[uVar5] = (uchar)iVar4" (subscript_expression "out[uVar5]" identifier [ identifier ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5])" identifier (argument_list "((uint)pbVar1[uVar5])" ( (cast_expression "(uint)pbVar1[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5]" identifier [ identifier ])) )))) ;) (if_statement "if (iVar4 == -1) {\n                return 0x10;\n              }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n                return 0x10;\n              }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5] = (uchar)iVar4;" (assignment_expression "out[uVar5] = (uchar)iVar4" (subscript_expression "out[uVar5]" identifier [ identifier ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5])" identifier (argument_list "((uint)pbVar1[uVar5])" ( (cast_expression "(uint)pbVar1[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5]" identifier [ identifier ])) )))) ;) (if_statement "if (iVar4 == -1) {\n              return 0x10;\n            }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n              return 0x10;\n            }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5] = (uchar)iVar4;" (assignment_expression "out[uVar5] = (uchar)iVar4" (subscript_expression "out[uVar5]" identifier [ identifier ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5])" identifier (argument_list "((uint)pbVar1[uVar5])" ( (cast_expression "(uint)pbVar1[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5]" identifier [ identifier ])) )))) ;) (if_statement "if (iVar4 == -1) {\n            return 0x10;\n          }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n            return 0x10;\n          }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5] = (uchar)iVar4;" (assignment_expression "out[uVar5] = (uchar)iVar4" (subscript_expression "out[uVar5]" identifier [ identifier ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5])" identifier (argument_list "((uint)pbVar1[uVar5])" ( (cast_expression "(uint)pbVar1[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5]" identifier [ identifier ])) )))) ;) (if_statement "if (iVar4 == -1) {\n          return 0x10;\n        }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5] = (uchar)iVar4;" (assignment_expression "out[uVar5] = (uchar)iVar4" (subscript_expression "out[uVar5]" identifier [ identifier ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5])" identifier (argument_list "((uint)pbVar1[uVar5])" ( (cast_expression "(uint)pbVar1[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5]" identifier [ identifier ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5] = (uchar)iVar4;" (assignment_expression "out[uVar5] = (uchar)iVar4" (subscript_expression "out[uVar5]" identifier [ identifier ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (if_statement "if (uVar8 == uVar5) goto LAB_00170318;" if (parenthesized_expression "(uVar8 == uVar5)" ( (binary_expression "uVar8 == uVar5" identifier == identifier) )) (goto_statement "goto LAB_00170318;" goto statement_identifier ;)) })) (do_statement "do {\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 1] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 2] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 3] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 4] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 6] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 7] = (uchar)iVar4;\n      uVar5 = uVar5 + 8;\n    } while (uVar8 != uVar5);" do (compound_statement "{\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 1] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 2] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 3] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 4] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 5] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 6] = (uchar)iVar4;\n      iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);\n      if (iVar4 == -1) {\n        return 0x10;\n      }\n      out[uVar5 + 7] = (uchar)iVar4;\n      uVar5 = uVar5 + 8;\n    }" { (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5])" identifier (argument_list "((uint)pbVar1[uVar5])" ( (cast_expression "(uint)pbVar1[uVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5]" identifier [ identifier ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5] = (uchar)iVar4;" (assignment_expression "out[uVar5] = (uchar)iVar4" (subscript_expression "out[uVar5]" identifier [ identifier ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 1])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5 + 1])" identifier (argument_list "((uint)pbVar1[uVar5 + 1])" ( (cast_expression "(uint)pbVar1[uVar5 + 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5 + 1]" identifier [ (binary_expression "uVar5 + 1" identifier + number_literal) ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5 + 1] = (uchar)iVar4;" (assignment_expression "out[uVar5 + 1] = (uchar)iVar4" (subscript_expression "out[uVar5 + 1]" identifier [ (binary_expression "uVar5 + 1" identifier + number_literal) ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 2])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5 + 2])" identifier (argument_list "((uint)pbVar1[uVar5 + 2])" ( (cast_expression "(uint)pbVar1[uVar5 + 2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5 + 2]" identifier [ (binary_expression "uVar5 + 2" identifier + number_literal) ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5 + 2] = (uchar)iVar4;" (assignment_expression "out[uVar5 + 2] = (uchar)iVar4" (subscript_expression "out[uVar5 + 2]" identifier [ (binary_expression "uVar5 + 2" identifier + number_literal) ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 3])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5 + 3])" identifier (argument_list "((uint)pbVar1[uVar5 + 3])" ( (cast_expression "(uint)pbVar1[uVar5 + 3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5 + 3]" identifier [ (binary_expression "uVar5 + 3" identifier + number_literal) ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5 + 3] = (uchar)iVar4;" (assignment_expression "out[uVar5 + 3] = (uchar)iVar4" (subscript_expression "out[uVar5 + 3]" identifier [ (binary_expression "uVar5 + 3" identifier + number_literal) ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 4])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5 + 4])" identifier (argument_list "((uint)pbVar1[uVar5 + 4])" ( (cast_expression "(uint)pbVar1[uVar5 + 4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5 + 4]" identifier [ (binary_expression "uVar5 + 4" identifier + number_literal) ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5 + 4] = (uchar)iVar4;" (assignment_expression "out[uVar5 + 4] = (uchar)iVar4" (subscript_expression "out[uVar5 + 4]" identifier [ (binary_expression "uVar5 + 4" identifier + number_literal) ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 5])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5 + 5])" identifier (argument_list "((uint)pbVar1[uVar5 + 5])" ( (cast_expression "(uint)pbVar1[uVar5 + 5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5 + 5]" identifier [ (binary_expression "uVar5 + 5" identifier + number_literal) ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5 + 5] = (uchar)iVar4;" (assignment_expression "out[uVar5 + 5] = (uchar)iVar4" (subscript_expression "out[uVar5 + 5]" identifier [ (binary_expression "uVar5 + 5" identifier + number_literal) ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 6])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5 + 6])" identifier (argument_list "((uint)pbVar1[uVar5 + 6])" ( (cast_expression "(uint)pbVar1[uVar5 + 6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5 + 6]" identifier [ (binary_expression "uVar5 + 6" identifier + number_literal) ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5 + 6] = (uchar)iVar4;" (assignment_expression "out[uVar5 + 6] = (uchar)iVar4" (subscript_expression "out[uVar5 + 6]" identifier [ (binary_expression "uVar5 + 6" identifier + number_literal) ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7]);" (assignment_expression "iVar4 = der_ia5_value_decode((uint)pbVar1[uVar5 + 7])" identifier = (call_expression "der_ia5_value_decode((uint)pbVar1[uVar5 + 7])" identifier (argument_list "((uint)pbVar1[uVar5 + 7])" ( (cast_expression "(uint)pbVar1[uVar5 + 7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[uVar5 + 7]" identifier [ (binary_expression "uVar5 + 7" identifier + number_literal) ])) )))) ;) (if_statement "if (iVar4 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "out[uVar5 + 7] = (uchar)iVar4;" (assignment_expression "out[uVar5 + 7] = (uchar)iVar4" (subscript_expression "out[uVar5 + 7]" identifier [ (binary_expression "uVar5 + 7" identifier + number_literal) ]) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 8;" (assignment_expression "uVar5 = uVar5 + 8" identifier = (binary_expression "uVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 != uVar5)" ( (binary_expression "uVar8 != uVar5" identifier != identifier) )) ;) })) (labeled_statement "LAB_00170318:\n  *outlen = uVar5;" statement_identifier : (expression_statement "*outlen = uVar5;" (assignment_expression "*outlen = uVar5" (pointer_expression "*outlen" * identifier) = identifier) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined8 der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}\n\n" (function_definition "undefined8 der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}" type_identifier (function_declarator "der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)" identifier (parameter_list "(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "undefined1 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "ulong *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (if_statement "if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\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/ia5/der_decode_ia5_string.c",0x21);\n  }" { (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" identifier (argument_list "("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" ( (string_literal ""in != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" if (parenthesized_expression "(param_3 == (undefined1 *)0x0)" ( (binary_expression "param_3 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" { (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" identifier (argument_list "("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" ( (string_literal ""out != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_4 == (ulong *)0x0) {\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" if (parenthesized_expression "(param_4 == (ulong *)0x0)" ( (binary_expression "param_4 == (ulong *)0x0" identifier == (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" { (expression_statement "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);" (call_expression "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" identifier (argument_list "("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" ( (string_literal ""outlen != NULL"" " string_content ") , (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 < 2) {\n    return 7;\n  }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }" if (parenthesized_expression "((*param_1 & 0x1f) != 0x16)" ( (binary_expression "(*param_1 & 0x1f) != 0x16" (parenthesized_expression "(*param_1 & 0x1f)" ( (binary_expression "*param_1 & 0x1f" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (ulong)bVar1;" (assignment_expression "uVar7 = (ulong)bVar1" identifier = (cast_expression "(ulong)bVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "lVar6 = 2;" (assignment_expression "lVar6 = 2" identifier = number_literal) ;) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }" { (expression_statement "uVar4 = (ulong)(bVar1 & 0x7f);" (assignment_expression "uVar4 = (ulong)(bVar1 & 0x7f)" identifier = (call_expression "(ulong)(bVar1 & 0x7f)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar1 & 0x7f)" ( (binary_expression "bVar1 & 0x7f" identifier & number_literal) )))) ;) (if_statement "if (2 < uVar4 - 1) {\n      return 7;\n    }" if (parenthesized_expression "(2 < uVar4 - 1)" ( (binary_expression "2 < uVar4 - 1" number_literal < (binary_expression "uVar4 - 1" identifier - number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (if_statement "if (param_2 < uVar4 + 1) {\n      return 7;\n    }" if (parenthesized_expression "(param_2 < uVar4 + 1)" ( (binary_expression "param_2 < uVar4 + 1" identifier < (binary_expression "uVar4 + 1" identifier + number_literal)) )) (compound_statement "{\n      return 7;\n    }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar7 = (ulong)param_1[2];" (assignment_expression "uVar7 = (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 (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }" if (parenthesized_expression "(uVar4 != 1)" ( (binary_expression "uVar4 != 1" identifier != number_literal) )) (compound_statement "{\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }" { (expression_statement "uVar2 = CONCAT11(param_1[2],param_1[3]);" (assignment_expression "uVar2 = 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 "uVar7 = (ulong)uVar2;" (assignment_expression "uVar7 = (ulong)uVar2" identifier = (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }" if (parenthesized_expression "(uVar4 != 2)" ( (binary_expression "uVar4 != 2" identifier != number_literal) )) (compound_statement "{\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }" { (expression_statement "uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);" (assignment_expression "uVar7 = (ulong)CONCAT21(uVar2,param_1[4])" identifier = (cast_expression "(ulong)CONCAT21(uVar2,param_1[4])" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CONCAT21(uVar2,param_1[4])" identifier (argument_list "(uVar2,param_1[4])" ( identifier , (subscript_expression "param_1[4]" identifier [ number_literal ]) ))))) ;) })) })) (expression_statement "lVar6 = uVar4 + 2;" (assignment_expression "lVar6 = uVar4 + 2" identifier = (binary_expression "uVar4 + 2" identifier + number_literal)) ;) })) (if_statement "if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }" if (parenthesized_expression "(*param_4 < uVar7)" ( (binary_expression "*param_4 < uVar7" (pointer_expression "*param_4" * identifier) < identifier) )) (compound_statement "{\n    *param_4 = uVar7;\n    return 6;\n  }" { (expression_statement "*param_4 = uVar7;" (assignment_expression "*param_4 = uVar7" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return 6;" return number_literal ;) })) (if_statement "if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }" if (parenthesized_expression "(param_2 < lVar6 + uVar7)" ( (binary_expression "param_2 < lVar6 + uVar7" identifier < (binary_expression "lVar6 + uVar7" identifier + identifier)) )) (compound_statement "{\n    return 7;\n  }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }" { (expression_statement "param_1 = param_1 + lVar6;" (assignment_expression "param_1 = param_1 + lVar6" identifier = (binary_expression "param_1 + lVar6" identifier + identifier)) ;) (expression_statement "uVar5 = (uint)uVar7 & 7;" (assignment_expression "uVar5 = (uint)uVar7 & 7" identifier = (binary_expression "(uint)uVar7 & 7" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }" if (parenthesized_expression "((uVar7 & 7) != 0)" ( (binary_expression "(uVar7 & 7) != 0" (parenthesized_expression "(uVar7 & 7)" ( (binary_expression "uVar7 & 7" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }" { (if_statement "if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }" if (parenthesized_expression "(uVar5 != 1)" ( (binary_expression "uVar5 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }" { (if_statement "if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }" if (parenthesized_expression "(uVar5 != 2)" ( (binary_expression "uVar5 != 2" identifier != number_literal) )) (compound_statement "{\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }" { (if_statement "if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }" if (parenthesized_expression "(uVar5 != 3)" ( (binary_expression "uVar5 != 3" identifier != number_literal) )) (compound_statement "{\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }" { (if_statement "if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }" if (parenthesized_expression "(uVar5 != 4)" ( (binary_expression "uVar5 != 4" identifier != number_literal) )) (compound_statement "{\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }" { (if_statement "if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }" if (parenthesized_expression "(uVar5 != 5)" ( (binary_expression "uVar5 != 5" identifier != number_literal) )) (compound_statement "{\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }" { (if_statement "if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }" if (parenthesized_expression "(uVar5 != 6)" ( (binary_expression "uVar5 != 6" identifier != number_literal) )) (compound_statement "{\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }" { (expression_statement "iVar3 = der_ia5_value_decode(*param_1);" (assignment_expression "iVar3 = der_ia5_value_decode(*param_1)" identifier = (call_expression "der_ia5_value_decode(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (iVar3 == -1) {\n                    return 0x10;\n                  }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n                    return 0x10;\n                  }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "*param_3 = (char)iVar3;" (assignment_expression "*param_3 = (char)iVar3" (pointer_expression "*param_3" * identifier) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n                  return 0x10;\n                }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n                  return 0x10;\n                }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n                return 0x10;\n              }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n                return 0x10;\n              }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n              return 0x10;\n            }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n              return 0x10;\n            }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n            return 0x10;\n          }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n            return 0x10;\n          }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n          return 0x10;\n        }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar7 == uVar4) goto LAB_00170318;" if (parenthesized_expression "(uVar7 == uVar4)" ( (binary_expression "uVar7 == uVar4" identifier == identifier) )) (goto_statement "goto LAB_00170318;" goto statement_identifier ;)) })) (do_statement "do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);" do (compound_statement "{\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    }" { (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4])" identifier (argument_list "(param_1[uVar4])" ( (subscript_expression "param_1[uVar4]" identifier [ identifier ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" identifier [ identifier ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 1])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 1])" identifier (argument_list "(param_1[uVar4 + 1])" ( (subscript_expression "param_1[uVar4 + 1]" identifier [ (binary_expression "uVar4 + 1" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 1] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 1] = (char)iVar3" (subscript_expression "param_3[uVar4 + 1]" identifier [ (binary_expression "uVar4 + 1" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 2])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 2])" identifier (argument_list "(param_1[uVar4 + 2])" ( (subscript_expression "param_1[uVar4 + 2]" identifier [ (binary_expression "uVar4 + 2" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 2] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 2] = (char)iVar3" (subscript_expression "param_3[uVar4 + 2]" identifier [ (binary_expression "uVar4 + 2" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 3])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 3])" identifier (argument_list "(param_1[uVar4 + 3])" ( (subscript_expression "param_1[uVar4 + 3]" identifier [ (binary_expression "uVar4 + 3" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 3] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 3] = (char)iVar3" (subscript_expression "param_3[uVar4 + 3]" identifier [ (binary_expression "uVar4 + 3" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 4])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 4])" identifier (argument_list "(param_1[uVar4 + 4])" ( (subscript_expression "param_1[uVar4 + 4]" identifier [ (binary_expression "uVar4 + 4" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 4] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 4] = (char)iVar3" (subscript_expression "param_3[uVar4 + 4]" identifier [ (binary_expression "uVar4 + 4" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 5])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 5])" identifier (argument_list "(param_1[uVar4 + 5])" ( (subscript_expression "param_1[uVar4 + 5]" identifier [ (binary_expression "uVar4 + 5" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 5] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 5] = (char)iVar3" (subscript_expression "param_3[uVar4 + 5]" identifier [ (binary_expression "uVar4 + 5" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 6])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 6])" identifier (argument_list "(param_1[uVar4 + 6])" ( (subscript_expression "param_1[uVar4 + 6]" identifier [ (binary_expression "uVar4 + 6" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 6] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 6] = (char)iVar3" (subscript_expression "param_3[uVar4 + 6]" identifier [ (binary_expression "uVar4 + 6" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 7])" identifier = (call_expression "der_ia5_value_decode(param_1[uVar4 + 7])" identifier (argument_list "(param_1[uVar4 + 7])" ( (subscript_expression "param_1[uVar4 + 7]" identifier [ (binary_expression "uVar4 + 7" identifier + number_literal) ]) )))) ;) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n        return 0x10;\n      }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "param_3[uVar4 + 7] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 7] = (char)iVar3" (subscript_expression "param_3[uVar4 + 7]" identifier [ (binary_expression "uVar4 + 7" identifier + number_literal) ]) = (cast_expression "(char)iVar3" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar4 = uVar4 + 8;" (assignment_expression "uVar4 = uVar4 + 8" identifier = (binary_expression "uVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 != uVar4)" ( (binary_expression "uVar7 != uVar4" identifier != identifier) )) ;) })) (labeled_statement "LAB_00170318:\n  *param_4 = uVar4;" statement_identifier : (expression_statement "*param_4 = uVar4;" (assignment_expression "*param_4 = uVar4" (pointer_expression "*param_4" * identifier) = identifier) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE 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 (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (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 ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (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 LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + LIT)) )) (compound_statement { (return_statement return 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 = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ IDENT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (return_statement return LIT ;) })))
(function_definition "undefined8 der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "der_decode_ia5_string(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)" (identifier "der_decode_ia5_string") (parameter_list "(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) (, ",") (parameter_declaration "undefined1 *param_3" (type_identifier "undefined1") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "ulong *param_4" (type_identifier "ulong") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  int iVar3;\n  ulong uVar4;\n  uint uVar5;\n  long lVar6;\n  ulong uVar7;\n  \n  if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\n  }\n  if (param_3 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }\n  if (param_4 == (ulong *)0x0) {\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }\n  if (param_2 < 2) {\n    return 7;\n  }\n  if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }\n  bVar1 = param_1[1];\n  uVar7 = (ulong)bVar1;\n  lVar6 = 2;\n  if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }\n  if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }\n  if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }\n  uVar4 = 0;\n  if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }\nLAB_00170318:\n  *param_4 = uVar4;\n  return 0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n                    \n    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);\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/ia5/der_decode_ia5_string.c",0x21);\n  }" ({ "{") (expression_statement "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);" (call_expression "crypt_argchk("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" (identifier "crypt_argchk") (argument_list "("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21)" (( "(") (string_literal ""in != NULL"" (" """) (string_content "in != NULL") (" """)) (, ",") (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" (" """) (string_content "src/pk/asn1/der/ia5/der_decode_ia5_string.c") (" """)) (, ",") (number_literal "0x21") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" (if "if") (parenthesized_expression "(param_3 == (undefined1 *)0x0)" (( "(") (binary_expression "param_3 == (undefined1 *)0x0" (identifier "param_3") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);\n  }" ({ "{") (expression_statement "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);" (call_expression "crypt_argchk("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" (identifier "crypt_argchk") (argument_list "("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22)" (( "(") (string_literal ""out != NULL"" (" """) (string_content "out != NULL") (" """)) (, ",") (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" (" """) (string_content "src/pk/asn1/der/ia5/der_decode_ia5_string.c") (" """)) (, ",") (number_literal "0x22") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 == (ulong *)0x0) {\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" (if "if") (parenthesized_expression "(param_4 == (ulong *)0x0)" (( "(") (binary_expression "param_4 == (ulong *)0x0" (identifier "param_4") (== "==") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);\n  }" ({ "{") (expression_statement "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);" (call_expression "crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" (identifier "crypt_argchk") (argument_list "("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23)" (( "(") (string_literal ""outlen != NULL"" (" """) (string_content "outlen != NULL") (" """)) (, ",") (string_literal ""src/pk/asn1/der/ia5/der_decode_ia5_string.c"" (" """) (string_content "src/pk/asn1/der/ia5/der_decode_ia5_string.c") (" """)) (, ",") (number_literal "0x23") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 < 2) {\n    return 7;\n  }" (if "if") (parenthesized_expression "(param_2 < 2)" (( "(") (binary_expression "param_2 < 2" (identifier "param_2") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    return 7;\n  }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (if_statement "if ((*param_1 & 0x1f) != 0x16) {\n    return 7;\n  }" (if "if") (parenthesized_expression "((*param_1 & 0x1f) != 0x16)" (( "(") (binary_expression "(*param_1 & 0x1f) != 0x16" (parenthesized_expression "(*param_1 & 0x1f)" (( "(") (binary_expression "*param_1 & 0x1f" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "0x1f")) () ")")) (!= "!=") (number_literal "0x16")) () ")")) (compound_statement "{\n    return 7;\n  }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "bVar1 = param_1[1];" (assignment_expression "bVar1 = param_1[1]" (identifier "bVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = (ulong)bVar1;" (assignment_expression "uVar7 = (ulong)bVar1" (identifier "uVar7") (= "=") (cast_expression "(ulong)bVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "lVar6 = 2;" (assignment_expression "lVar6 = 2" (identifier "lVar6") (= "=") (number_literal "2")) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }" (if "if") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar4 = (ulong)(bVar1 & 0x7f);\n    if (2 < uVar4 - 1) {\n      return 7;\n    }\n    if (param_2 < uVar4 + 1) {\n      return 7;\n    }\n    uVar7 = (ulong)param_1[2];\n    if (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }\n    lVar6 = uVar4 + 2;\n  }" ({ "{") (expression_statement "uVar4 = (ulong)(bVar1 & 0x7f);" (assignment_expression "uVar4 = (ulong)(bVar1 & 0x7f)" (identifier "uVar4") (= "=") (call_expression "(ulong)(bVar1 & 0x7f)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar1 & 0x7f)" (( "(") (binary_expression "bVar1 & 0x7f" (identifier "bVar1") (& "&") (number_literal "0x7f")) () ")")))) (; ";")) (if_statement "if (2 < uVar4 - 1) {\n      return 7;\n    }" (if "if") (parenthesized_expression "(2 < uVar4 - 1)" (( "(") (binary_expression "2 < uVar4 - 1" (number_literal "2") (< "<") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n      return 7;\n    }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (if_statement "if (param_2 < uVar4 + 1) {\n      return 7;\n    }" (if "if") (parenthesized_expression "(param_2 < uVar4 + 1)" (( "(") (binary_expression "param_2 < uVar4 + 1" (identifier "param_2") (< "<") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n      return 7;\n    }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "uVar7 = (ulong)param_1[2];" (assignment_expression "uVar7 = (ulong)param_1[2]" (identifier "uVar7") (= "=") (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 (uVar4 != 1) {\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }" (if "if") (parenthesized_expression "(uVar4 != 1)" (( "(") (binary_expression "uVar4 != 1" (identifier "uVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      uVar2 = CONCAT11(param_1[2],param_1[3]);\n      uVar7 = (ulong)uVar2;\n      if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }\n    }" ({ "{") (expression_statement "uVar2 = CONCAT11(param_1[2],param_1[3]);" (assignment_expression "uVar2 = CONCAT11(param_1[2],param_1[3])" (identifier "uVar2") (= "=") (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 "uVar7 = (ulong)uVar2;" (assignment_expression "uVar7 = (ulong)uVar2" (identifier "uVar7") (= "=") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2"))) (; ";")) (if_statement "if (uVar4 != 2) {\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }" (if "if") (parenthesized_expression "(uVar4 != 2)" (( "(") (binary_expression "uVar4 != 2" (identifier "uVar4") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);\n      }" ({ "{") (expression_statement "uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);" (assignment_expression "uVar7 = (ulong)CONCAT21(uVar2,param_1[4])" (identifier "uVar7") (= "=") (cast_expression "(ulong)CONCAT21(uVar2,param_1[4])" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (call_expression "CONCAT21(uVar2,param_1[4])" (identifier "CONCAT21") (argument_list "(uVar2,param_1[4])" (( "(") (identifier "uVar2") (, ",") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar6 = uVar4 + 2;" (assignment_expression "lVar6 = uVar4 + 2" (identifier "lVar6") (= "=") (binary_expression "uVar4 + 2" (identifier "uVar4") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if (*param_4 < uVar7) {\n    *param_4 = uVar7;\n    return 6;\n  }" (if "if") (parenthesized_expression "(*param_4 < uVar7)" (( "(") (binary_expression "*param_4 < uVar7" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n    *param_4 = uVar7;\n    return 6;\n  }" ({ "{") (expression_statement "*param_4 = uVar7;" (assignment_expression "*param_4 = uVar7" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "uVar7")) (; ";")) (return_statement "return 6;" (return "return") (number_literal "6") (; ";")) (} "}"))) (if_statement "if (param_2 < lVar6 + uVar7) {\n    return 7;\n  }" (if "if") (parenthesized_expression "(param_2 < lVar6 + uVar7)" (( "(") (binary_expression "param_2 < lVar6 + uVar7" (identifier "param_2") (< "<") (binary_expression "lVar6 + uVar7" (identifier "lVar6") (+ "+") (identifier "uVar7"))) () ")")) (compound_statement "{\n    return 7;\n  }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar7 != 0) {\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    param_1 = param_1 + lVar6;\n    uVar5 = (uint)uVar7 & 7;\n    if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }\n    do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);\n  }" ({ "{") (expression_statement "param_1 = param_1 + lVar6;" (assignment_expression "param_1 = param_1 + lVar6" (identifier "param_1") (= "=") (binary_expression "param_1 + lVar6" (identifier "param_1") (+ "+") (identifier "lVar6"))) (; ";")) (expression_statement "uVar5 = (uint)uVar7 & 7;" (assignment_expression "uVar5 = (uint)uVar7 & 7" (identifier "uVar5") (= "=") (binary_expression "(uint)uVar7 & 7" (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")) (& "&") (number_literal "7"))) (; ";")) (if_statement "if ((uVar7 & 7) != 0) {\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }" (if "if") (parenthesized_expression "((uVar7 & 7) != 0)" (( "(") (binary_expression "(uVar7 & 7) != 0" (parenthesized_expression "(uVar7 & 7)" (( "(") (binary_expression "uVar7 & 7" (identifier "uVar7") (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      uVar4 = uVar4 + 1;\n      if (uVar7 == uVar4) goto LAB_00170318;\n    }" ({ "{") (if_statement "if (uVar5 != 1) {\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }" (if "if") (parenthesized_expression "(uVar5 != 1)" (( "(") (binary_expression "uVar5 != 1" (identifier "uVar5") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }\n        iVar3 = der_ia5_value_decode(param_1[uVar4]);\n        if (iVar3 == -1) {\n          return 0x10;\n        }\n        param_3[uVar4] = (char)iVar3;\n        uVar4 = uVar4 + 1;\n      }" ({ "{") (if_statement "if (uVar5 != 2) {\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }" (if "if") (parenthesized_expression "(uVar5 != 2)" (( "(") (binary_expression "uVar5 != 2" (identifier "uVar5") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n          if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }\n          iVar3 = der_ia5_value_decode(param_1[uVar4]);\n          if (iVar3 == -1) {\n            return 0x10;\n          }\n          param_3[uVar4] = (char)iVar3;\n          uVar4 = uVar4 + 1;\n        }" ({ "{") (if_statement "if (uVar5 != 3) {\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }" (if "if") (parenthesized_expression "(uVar5 != 3)" (( "(") (binary_expression "uVar5 != 3" (identifier "uVar5") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n            if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }\n            iVar3 = der_ia5_value_decode(param_1[uVar4]);\n            if (iVar3 == -1) {\n              return 0x10;\n            }\n            param_3[uVar4] = (char)iVar3;\n            uVar4 = uVar4 + 1;\n          }" ({ "{") (if_statement "if (uVar5 != 4) {\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }" (if "if") (parenthesized_expression "(uVar5 != 4)" (( "(") (binary_expression "uVar5 != 4" (identifier "uVar5") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n              if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }\n              iVar3 = der_ia5_value_decode(param_1[uVar4]);\n              if (iVar3 == -1) {\n                return 0x10;\n              }\n              param_3[uVar4] = (char)iVar3;\n              uVar4 = uVar4 + 1;\n            }" ({ "{") (if_statement "if (uVar5 != 5) {\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }" (if "if") (parenthesized_expression "(uVar5 != 5)" (( "(") (binary_expression "uVar5 != 5" (identifier "uVar5") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n                if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }\n                iVar3 = der_ia5_value_decode(param_1[uVar4]);\n                if (iVar3 == -1) {\n                  return 0x10;\n                }\n                param_3[uVar4] = (char)iVar3;\n                uVar4 = uVar4 + 1;\n              }" ({ "{") (if_statement "if (uVar5 != 6) {\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }" (if "if") (parenthesized_expression "(uVar5 != 6)" (( "(") (binary_expression "uVar5 != 6" (identifier "uVar5") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n                  iVar3 = der_ia5_value_decode(*param_1);\n                  if (iVar3 == -1) {\n                    return 0x10;\n                  }\n                  *param_3 = (char)iVar3;\n                  uVar4 = 1;\n                }" ({ "{") (expression_statement "iVar3 = der_ia5_value_decode(*param_1);" (assignment_expression "iVar3 = der_ia5_value_decode(*param_1)" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(*param_1)" (identifier "der_ia5_value_decode") (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n                    return 0x10;\n                  }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                    return 0x10;\n                  }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "*param_3 = (char)iVar3;" (assignment_expression "*param_3 = (char)iVar3" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4])" (( "(") (subscript_expression "param_1[uVar4]" (identifier "param_1") ([ "[") (identifier "uVar4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n                  return 0x10;\n                }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                  return 0x10;\n                }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" (identifier "param_3") ([ "[") (identifier "uVar4") (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4])" (( "(") (subscript_expression "param_1[uVar4]" (identifier "param_1") ([ "[") (identifier "uVar4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n                return 0x10;\n              }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                return 0x10;\n              }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" (identifier "param_3") ([ "[") (identifier "uVar4") (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4])" (( "(") (subscript_expression "param_1[uVar4]" (identifier "param_1") ([ "[") (identifier "uVar4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n              return 0x10;\n            }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              return 0x10;\n            }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" (identifier "param_3") ([ "[") (identifier "uVar4") (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4])" (( "(") (subscript_expression "param_1[uVar4]" (identifier "param_1") ([ "[") (identifier "uVar4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n            return 0x10;\n          }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            return 0x10;\n          }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" (identifier "param_3") ([ "[") (identifier "uVar4") (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4])" (( "(") (subscript_expression "param_1[uVar4]" (identifier "param_1") ([ "[") (identifier "uVar4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" (identifier "param_3") ([ "[") (identifier "uVar4") (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4])" (( "(") (subscript_expression "param_1[uVar4]" (identifier "param_1") ([ "[") (identifier "uVar4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" (identifier "param_3") ([ "[") (identifier "uVar4") (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar7 == uVar4) goto LAB_00170318;" (if "if") (parenthesized_expression "(uVar7 == uVar4)" (( "(") (binary_expression "uVar7 == uVar4" (identifier "uVar7") (== "==") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_00170318;" (goto "goto") (statement_identifier "LAB_00170318") (; ";"))) (} "}"))) (do_statement "do {\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    } while (uVar7 != uVar4);" (do "do") (compound_statement "{\n      iVar3 = der_ia5_value_decode(param_1[uVar4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 1] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 2] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 3] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 4] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 5] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 6] = (char)iVar3;\n      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);\n      if (iVar3 == -1) {\n        return 0x10;\n      }\n      param_3[uVar4 + 7] = (char)iVar3;\n      uVar4 = uVar4 + 8;\n    }" ({ "{") (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4])" (( "(") (subscript_expression "param_1[uVar4]" (identifier "param_1") ([ "[") (identifier "uVar4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4] = (char)iVar3;" (assignment_expression "param_3[uVar4] = (char)iVar3" (subscript_expression "param_3[uVar4]" (identifier "param_3") ([ "[") (identifier "uVar4") (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 1])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4 + 1])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4 + 1])" (( "(") (subscript_expression "param_1[uVar4 + 1]" (identifier "param_1") ([ "[") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4 + 1] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 1] = (char)iVar3" (subscript_expression "param_3[uVar4 + 1]" (identifier "param_3") ([ "[") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 2])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4 + 2])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4 + 2])" (( "(") (subscript_expression "param_1[uVar4 + 2]" (identifier "param_1") ([ "[") (binary_expression "uVar4 + 2" (identifier "uVar4") (+ "+") (number_literal "2")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4 + 2] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 2] = (char)iVar3" (subscript_expression "param_3[uVar4 + 2]" (identifier "param_3") ([ "[") (binary_expression "uVar4 + 2" (identifier "uVar4") (+ "+") (number_literal "2")) (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 3])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4 + 3])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4 + 3])" (( "(") (subscript_expression "param_1[uVar4 + 3]" (identifier "param_1") ([ "[") (binary_expression "uVar4 + 3" (identifier "uVar4") (+ "+") (number_literal "3")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4 + 3] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 3] = (char)iVar3" (subscript_expression "param_3[uVar4 + 3]" (identifier "param_3") ([ "[") (binary_expression "uVar4 + 3" (identifier "uVar4") (+ "+") (number_literal "3")) (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 4])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4 + 4])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4 + 4])" (( "(") (subscript_expression "param_1[uVar4 + 4]" (identifier "param_1") ([ "[") (binary_expression "uVar4 + 4" (identifier "uVar4") (+ "+") (number_literal "4")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4 + 4] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 4] = (char)iVar3" (subscript_expression "param_3[uVar4 + 4]" (identifier "param_3") ([ "[") (binary_expression "uVar4 + 4" (identifier "uVar4") (+ "+") (number_literal "4")) (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 5])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4 + 5])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4 + 5])" (( "(") (subscript_expression "param_1[uVar4 + 5]" (identifier "param_1") ([ "[") (binary_expression "uVar4 + 5" (identifier "uVar4") (+ "+") (number_literal "5")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4 + 5] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 5] = (char)iVar3" (subscript_expression "param_3[uVar4 + 5]" (identifier "param_3") ([ "[") (binary_expression "uVar4 + 5" (identifier "uVar4") (+ "+") (number_literal "5")) (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 6])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4 + 6])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4 + 6])" (( "(") (subscript_expression "param_1[uVar4 + 6]" (identifier "param_1") ([ "[") (binary_expression "uVar4 + 6" (identifier "uVar4") (+ "+") (number_literal "6")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4 + 6] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 6] = (char)iVar3" (subscript_expression "param_3[uVar4 + 6]" (identifier "param_3") ([ "[") (binary_expression "uVar4 + 6" (identifier "uVar4") (+ "+") (number_literal "6")) (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);" (assignment_expression "iVar3 = der_ia5_value_decode(param_1[uVar4 + 7])" (identifier "iVar3") (= "=") (call_expression "der_ia5_value_decode(param_1[uVar4 + 7])" (identifier "der_ia5_value_decode") (argument_list "(param_1[uVar4 + 7])" (( "(") (subscript_expression "param_1[uVar4 + 7]" (identifier "param_1") ([ "[") (binary_expression "uVar4 + 7" (identifier "uVar4") (+ "+") (number_literal "7")) (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n        return 0x10;\n      }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return 0x10;\n      }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "param_3[uVar4 + 7] = (char)iVar3;" (assignment_expression "param_3[uVar4 + 7] = (char)iVar3" (subscript_expression "param_3[uVar4 + 7]" (identifier "param_3") ([ "[") (binary_expression "uVar4 + 7" (identifier "uVar4") (+ "+") (number_literal "7")) (] "]")) (= "=") (cast_expression "(char)iVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "uVar4 = uVar4 + 8;" (assignment_expression "uVar4 = uVar4 + 8" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 8" (identifier "uVar4") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 != uVar4)" (( "(") (binary_expression "uVar7 != uVar4" (identifier "uVar7") (!= "!=") (identifier "uVar4")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00170318:\n  *param_4 = uVar4;" (statement_identifier "LAB_00170318") (: ":") (expression_statement "*param_4 = uVar4;" (assignment_expression "*param_4 = uVar4" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "uVar4")) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int function_1(type_1 *var_1,type_2 var_5,type_1 *var_3,type_2 *var_4)

{
  type_3 *var_14;
  type_3 var_6;
  type_4 uVar3;
  int var_15;
  type_2 var_7;
  type_5 var_12;
  long var_11;
  type_2 var_10;
  
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("in != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x21);
  }
  if (var_3 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("out != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x22);
  }
  if (var_4 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("outlen != NULL","src/pk/asn1/der/ia5/der_decode_ia5_string.c",0x23);
  }
  if (var_5 < 2) {
    return 7;
  }
  if ((*var_1 & 0x1f) != 0x16) {
    return 7;
  }
  var_6 = var_1[1];
  var_10 = (type_2)var_6;
  var_11 = 2;
  if ((char)var_6 < '\0') {
    var_7 = (type_2)(var_6 & 0x7f);
    if (2 < var_7 - 1) {
      return 7;
    }
    if (var_5 < var_7 + 1) {
      return 7;
    }
    var_10 = (type_2)var_1[2];
    if (var_7 != 1) {
      uVar3 = var_8(var_1[2],var_1[3]);
      var_10 = (type_2)uVar3;
      if (var_7 != 2) {
        var_10 = (type_2)var_9(uVar3,var_1[4]);
      }
    }
    var_11 = var_7 + 2;
  }
  if (*var_4 < var_10) {
    *var_4 = var_10;
    return 6;
  }
  if (var_5 < var_11 + var_10) {
    return 7;
  }
  var_7 = 0;
  if (var_10 != 0) {
    var_14 = var_1 + var_11;
    var_12 = (type_5)var_10 & 7;
    if ((var_10 & 7) != 0) {
      if (var_12 != 1) {
        if (var_12 != 2) {
          if (var_12 != 3) {
            if (var_12 != 4) {
              if (var_12 != 5) {
                if (var_12 != 6) {
                  var_15 = var_13((type_5)*var_14);
                  if (var_15 == -1) {
                    return 0x10;
                  }
                  *var_3 = (type_1)var_15;
                  var_7 = 1;
                }
                var_15 = var_13((type_5)var_14[var_7]);
                if (var_15 == -1) {
                  return 0x10;
                }
                var_3[var_7] = (type_1)var_15;
                var_7 = var_7 + 1;
              }
              var_15 = var_13((type_5)var_14[var_7]);
              if (var_15 == -1) {
                return 0x10;
              }
              var_3[var_7] = (type_1)var_15;
              var_7 = var_7 + 1;
            }
            var_15 = var_13((type_5)var_14[var_7]);
            if (var_15 == -1) {
              return 0x10;
            }
            var_3[var_7] = (type_1)var_15;
            var_7 = var_7 + 1;
          }
          var_15 = var_13((type_5)var_14[var_7]);
          if (var_15 == -1) {
            return 0x10;
          }
          var_3[var_7] = (type_1)var_15;
          var_7 = var_7 + 1;
        }
        var_15 = var_13((type_5)var_14[var_7]);
        if (var_15 == -1) {
          return 0x10;
        }
        var_3[var_7] = (type_1)var_15;
        var_7 = var_7 + 1;
      }
      var_15 = var_13((type_5)var_14[var_7]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7] = (type_1)var_15;
      var_7 = var_7 + 1;
      if (var_10 == var_7) goto LAB_00170318;
    }
    do {
      var_15 = var_13((type_5)var_14[var_7]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7] = (type_1)var_15;
      var_15 = var_13((type_5)var_14[var_7 + 1]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7 + 1] = (type_1)var_15;
      var_15 = var_13((type_5)var_14[var_7 + 2]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7 + 2] = (type_1)var_15;
      var_15 = var_13((type_5)var_14[var_7 + 3]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7 + 3] = (type_1)var_15;
      var_15 = var_13((type_5)var_14[var_7 + 4]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7 + 4] = (type_1)var_15;
      var_15 = var_13((type_5)var_14[var_7 + 5]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7 + 5] = (type_1)var_15;
      var_15 = var_13((type_5)var_14[var_7 + 6]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7 + 6] = (type_1)var_15;
      var_15 = var_13((type_5)var_14[var_7 + 7]);
      if (var_15 == -1) {
        return 0x10;
      }
      var_3[var_7 + 7] = (type_1)var_15;
      var_7 = var_7 + 8;
    } while (var_10 != var_7);
  }
LAB_00170318:
  *var_4 = var_7;
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) 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: (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: (type_identifier) declarator: (identifier)) (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (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: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (return_statement (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: (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: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (return_statement (number_literal)))))

undefined8 MASKED(byte *param_1,ulong param_2,undefined1 *param_3,ulong *param_4)

{
  byte bVar1;
  ushort uVar2;
  int iVar3;
  ulong uVar4;
  uint uVar5;
  long lVar6;
  ulong uVar7;
  
  if (param_1 == (byte *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("in != NULL","src/pk/asn1/der/ia5/MASKED.c",0x21);
  }
  if (param_3 == (undefined1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("out != NULL","src/pk/asn1/der/ia5/MASKED.c",0x22);
  }
  if (param_4 == (ulong *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("outlen != NULL","src/pk/asn1/der/ia5/MASKED.c",0x23);
  }
  if (param_2 < 2) {
    return 7;
  }
  if ((*param_1 & 0x1f) != 0x16) {
    return 7;
  }
  bVar1 = param_1[1];
  uVar7 = (ulong)bVar1;
  lVar6 = 2;
  if ((char)bVar1 < '\0') {
    uVar4 = (ulong)(bVar1 & 0x7f);
    if (2 < uVar4 - 1) {
      return 7;
    }
    if (param_2 < uVar4 + 1) {
      return 7;
    }
    uVar7 = (ulong)param_1[2];
    if (uVar4 != 1) {
      uVar2 = CONCAT11(param_1[2],param_1[3]);
      uVar7 = (ulong)uVar2;
      if (uVar4 != 2) {
        uVar7 = (ulong)CONCAT21(uVar2,param_1[4]);
      }
    }
    lVar6 = uVar4 + 2;
  }
  if (*param_4 < uVar7) {
    *param_4 = uVar7;
    return 6;
  }
  if (param_2 < lVar6 + uVar7) {
    return 7;
  }
  uVar4 = 0;
  if (uVar7 != 0) {
    param_1 = param_1 + lVar6;
    uVar5 = (uint)uVar7 & 7;
    if ((uVar7 & 7) != 0) {
      if (uVar5 != 1) {
        if (uVar5 != 2) {
          if (uVar5 != 3) {
            if (uVar5 != 4) {
              if (uVar5 != 5) {
                if (uVar5 != 6) {
                  iVar3 = der_ia5_value_decode(*param_1);
                  if (iVar3 == -1) {
                    return 0x10;
                  }
                  *param_3 = (char)iVar3;
                  uVar4 = 1;
                }
                iVar3 = der_ia5_value_decode(param_1[uVar4]);
                if (iVar3 == -1) {
                  return 0x10;
                }
                param_3[uVar4] = (char)iVar3;
                uVar4 = uVar4 + 1;
              }
              iVar3 = der_ia5_value_decode(param_1[uVar4]);
              if (iVar3 == -1) {
                return 0x10;
              }
              param_3[uVar4] = (char)iVar3;
              uVar4 = uVar4 + 1;
            }
            iVar3 = der_ia5_value_decode(param_1[uVar4]);
            if (iVar3 == -1) {
              return 0x10;
            }
            param_3[uVar4] = (char)iVar3;
            uVar4 = uVar4 + 1;
          }
          iVar3 = der_ia5_value_decode(param_1[uVar4]);
          if (iVar3 == -1) {
            return 0x10;
          }
          param_3[uVar4] = (char)iVar3;
          uVar4 = uVar4 + 1;
        }
        iVar3 = der_ia5_value_decode(param_1[uVar4]);
        if (iVar3 == -1) {
          return 0x10;
        }
        param_3[uVar4] = (char)iVar3;
        uVar4 = uVar4 + 1;
      }
      iVar3 = der_ia5_value_decode(param_1[uVar4]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4] = (char)iVar3;
      uVar4 = uVar4 + 1;
      if (uVar7 == uVar4) goto LAB_00170318;
    }
    do {
      iVar3 = der_ia5_value_decode(param_1[uVar4]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 1]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 1] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 2]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 2] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 3]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 3] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 4]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 4] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 5]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 5] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 6]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 6] = (char)iVar3;
      iVar3 = der_ia5_value_decode(param_1[uVar4 + 7]);
      if (iVar3 == -1) {
        return 0x10;
      }
      param_3[uVar4 + 7] = (char)iVar3;
      uVar4 = uVar4 + 8;
    } while (uVar7 != uVar4);
  }
LAB_00170318:
  *param_4 = uVar4;
  return 0;
}

